@
おそらく 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 拡張機能です。
これらは「抽象的」であるように見えます - そのため、ファイルシステムに実際のパスは存在しません