/proc/net/unixの内容はどういう意味ですか?

/proc/net/unixの内容はどういう意味ですか?

/proc/net/unix私のAndroidデバイスにはwho'sというファイルがあります。コンテンツ どちらにも合わない基準Linuxディストリビューション(Unixドメインソケットを表示)最初の数行:

Num       RefCount Protocol Flags    Type St Inode Path
00000000: 00000002 00000000 00000000 0002 01 5287581 /data/misc/wifi/sockets/wpa_ctrl_789-3189
00000000: 00000003 00000000 00000000 0001 03    6402 /dev/socket/qmux_radio/qmux_client_socket    297
00000000: 00000002 00000000 00010000 0001 01    7180 /dev/.secure_storage/ssd_socket
00000000: 00000002 00000000 00010000 0001 01    6424 /dev/socket/cnd
00000000: 00000002 00000000 00010000 0001 01    6400 @QMulticlient
...

(1)この異なる列は何を表していますか?


編集する:わかりました。これ:

ここで、「Num」はカーネルテーブルスロット番号、「RefCount」はソケットユーザ数、「Protocol」は現在常に0、「Flags」はソケットの状態を格納する内部カーネルフラグです。現在のタイプは常に「1」です(カーネルはまだUnixドメインデータグラムソケットをサポートしていません)。 「St」はソケットの内部状態で、Pathはソケットのバインディングパス(存在する場合)です。

しかし、これは最新の情報ではなく、type「内部状態」が何を意味するのかについて明確な説明はありません。

(2) また、パスの末尾には、独自の列名のない追加番号がある場合もあります。それは何ですか?

また、それが生成されたカーネルソースコードではどこで見つけることができますか?

編集者:2016-04-27(解決する)

下記の回答ありがとうございます。lsof |grep qmuxその項目の最後の列の数字は次のようになりましたqmux_client_socketsPIDそれを使用するプロセスです。

答え1

このファイルを生成するコードは関数unix_seq_show()にあります。net/unix/af_unix.cカーネルソースコードから。見ているinclude/net/af_unix.hどのデータ構造が使用されているかを確認することも役立ちます。

ソケットパスは常に出力の最後の列です。Androidカーネルのソースコードマッチ在庫コアこれに関して。したがって、私が間違っていない限り、列のように見える数字は実際には別の列ではありません。

合計パス長が108バイト未満の場合は、必要なほとんどすべての名前をUNIXドメインソケットに割り当てることができます。したがって、これらの経路がどのように見えるかについては、いかなる前提もできません。これらの名前を選択するユーザースペースコードは、タブの後に数字を使用するか、名前をスペースで特定の長さまで埋めることもできます。私の理論をテストするには/dev/socket/qmux_radio/

関連情報