AF_UNIXを既存のファイルにバインドしますか?

AF_UNIXを既存のファイルにバインドしますか?

Unixドメインソケットを任意の既存のファイルにバインドできますか?そうでない場合、ソケットが使用するファイルをどのように識別しますか?

ベストアンサー1

Unixドメインソケットを任意の既存のファイルにバインドできますか?

カント。ファイルが存在してはいけません。それ以外の場合はbind(2)失敗しますEADDRINUSEbind(2)で指定されたパスを使用して新しいファイルが作成されます.sun_path

そうでない場合、ソケットが使用するファイルをどのように識別しますか?

lsof役に立つかもしれません。たくさんあるべきより

またはss:

$ nc -Ul foo &
[3] 9268
$ ls -i ./foo
1179674 ./foo
$ ss -elx | grep -w 1179674
u_str LISTEN  0  5 foo 618789 * 0 <-> ino:1179674 dev:0/2072 peers:

ss上記の出力は手動で空白に切り捨てられました。)

この-lオプションはssリスニングソケットのみを直接選択し、この-xオプションはUnixソケットのみを選択し、-eファイルとの一致に使用したinode番号で拡張情報を印刷するオプションです。

どちらも現在のソケットのみを見るssことができます。lsofネットワークネームスペース;しかし、異なるネットワーク名前空間の2つのUnixソケットは同じファイルにバインドできません。

デバイス番号も一致していることを確認したい場合がありますが、慎重に進む必要があります。sock_diag(7)(by ss)はカーネルが内部的に使用する形式で返しますMMMm mmmmが、()Buggyはssそれをユーザー領域形式として扱いますmmmM MMmm。上記の例のデバイス番号はありませんが、0/20728/24/dev/sdb8;-)

おすすめ記事