Linuxでは、Unixドメインソケットパスの先頭の@記号はどういう意味ですか?

Linuxでは、Unixドメインソケットパスの先頭の@記号はどういう意味ですか?

たとえば、@記号が前にあるいくつかのUNIXソケットパスを実行または表示するnetstat --protocol unixと、lsof -U@/tmp/dbus-qj8V39Yrpa。それから走るとls -l /tmp名前が見えません。dbus-qj8V39Yrpaそこに。

問題は、前の@記号が何を意味するのかです。 2番目の関連質問は - Unixソケットファイルをどこで見つけることができますか?@/tmp/dbus-qj8V39Yrpa)ファイルシステムにありますか?

ベストアンサー1

ファイルシステムのファイルに属さないソケットを示すことができます@abstract namespace

から引用Linuxプログラミングインターフェース渡すマイケルクリーク:

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

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

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

抽象バインディングを生成するには、最初のバイトを指定します。 ソーラーパスフィールドはNULLバイト(\ 0)です。 [...]

このタイプのソケットを表すために先行を表示するのは困難な場合があるため、null byteこれが先行表記の理由である可能性があります@

おすすめ記事