Linuxカーネルはインターネットドメインソケット用のファイルを生成しますか? [コピー]

Linuxカーネルはインターネットドメインソケット用のファイルを生成しますか? [コピー]

Linuxカーネルは、パス名にバインドされたUnixドメインソケット用のファイルを生成します。

Linuxカーネルはインターネットドメインソケット用のファイルを生成しますか?

答え1

いいえ、ハードドライブまたは他のブロックデバイス上のファイルではありません。

見たらソケット.cLinuxソースコードからソケット用のinodeを生成しますが、データは次の場所にあることがわかります。sockfs ファイルシステム、カーネル自体内の仮想ファイルシステムで、kmalloc型の関数を介してスペースを割り当てます。この意味では、ソケットはメモリに常駐する匿名ファイルです。

これは、ユニバーサルユーティリティが実際の物理メディア上のファイルと同じ機能を実行することに焦点を当てたデザインパターンである「Unixのすべてはファイルです」という概念にさかのぼります。 〜のようにリヌス・トバルズ指摘した:

「すべてがファイルです」のポイントは、任意のファイル名を持つことではなく(ソケットとパイプは、「ファイル」と「ファイル名」が互いに関係がないことを示します)、共通名を使用できることです。物事の道具を異なって機能させる事実。

したがって、ソケットにはファイルと同様のアクセス用のinodeがありますが、実際のファイルシステムには存在しません。

ただし、プロセスネットワーキングに使用され、ディスクファイルシステムに常駐するIPCタイプのオブジェクトであるUnixドメインソケットがあります。

答え2

Linuxカーネルは、パス名にバインドされたUnixドメインソケット用のファイルを生成します。

いいね

Linuxカーネルはインターネットドメインソケット用のファイルを生成しますか?

習慣。ソケットをIPアドレス+ポートにバインドすると、パス名は合成されません。表示できるファイルは生成されません。

bind()/ AF_INETsocketAF_INET6の物理ファイルシステムにファイルは作成されません。このbind()呼び出しは、組み込みの仮想ファイルシステムにファイルを生成しません。 (もちろん、netstat -46新しいファイルが作成されるように何らかの方法で模倣するFUSEファイルシステムを直接作成することもできます。)

関連情報