GNU/Linux >> Linux の 問題 >  >> Linux

Linux の UNIX ドメイン ソケット パスの先頭にある @ 記号は何を意味しますか?

@ おそらく abstract namespace で保持されているソケットを示しています ファイルシステム内のファイルに属していません。

The Linux Programming Interface からの引用 マイケル・ケリスク著:

<ブロック引用>

57.6 Linux 抽象ソケット名前空間

いわゆる抽象名前空間は Linux 固有の機能で、ファイル システムに名前を作成せずに UNIX ドメイン ソケットを名前にバインドできるようにします。これにはいくつかの潜在的な利点があります:

  • ファイル システム内の既存の名前との衝突の可能性について心配する必要はありません。
  • ソケットの使用が終了したら、ソケットのパス名をリンク解除する必要はありません。抽象名は、ソケットが閉じられると自動的に削除されます。
  • ソケットのファイル システム パス名を作成する必要はありません。これは、chroot 環境や、ファイル システムへの書き込みアクセス権がない場合に便利です。

抽象バインディングを作成するには、sun_path の最初のバイトを指定します ヌル バイト (\0) としてのフィールド。[...]

先頭の null byte を表示する そのようなタイプのソケットを示すのは難しいかもしれないので、それが先頭の @ の理由かもしれません サイン。


man 7 unix のとおり

  • abstract:抽象ソケット アドレスは、sun_path[0] がヌル バイト (\0) であるという事実によって区別されます。 )。 sun_path の残りのすべてのバイトは、ソケットの「名前」を定義します。 (名前のヌル バイトには特別な意味はありません。) 名前は、ファイル システムのパス名とは関係ありません。この名前空間のソケットのアドレスは、sun_path の残りのバイトによって指定されます。抽象ソケットのアドレスが getsockname(2)、getpeername(2)、および accept(2) によって返される場合、その長さは sizeof(struct sockaddr_un) であり、sun_path には抽象名が含まれます。抽象ソケット名前空間は、移植性のない Linux 拡張機能です。

これらは「抽象的」であるように見えます - そのため、ファイルシステムに実際のパスは存在しません


Linux
  1. LinuxとUnix:違いは何ですか?

  2. PおよびEは、Execファミリのコールで何を示しますか?

  3. Linux – Unix / linuxファイルのディレクトリ構造情報をどのように検査しますか?

  1. 「ls」コマンドは Linux/Unix でどのように機能しますか?

  2. Linuxコマンドの最後の&はどういう意味ですか?

  3. Registered I/O に相当する Unix/Linux は何ですか?

  1. Linux上のmysql.sockファイルの正しい場所は何ですか?

  2. Linux/UNIX の [新しいメールがあります] メッセージは何ですか?

  3. Linux でサフィックス .d は何を意味しますか?