/ proc / net / unixの内容の意味は何ですか?


11

私のAndroidデバイスには、/proc/net/unix誰のコンテンツ標準の 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)これらの異なるカラムは何を表していますか?


編集:[OK]を私が見つけたこれを

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

ただし、type「内部状態」の意味を明確にしていないため、これは最新の状態ではありません。

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

さらに、カーネルのソースコードのどこに、これが作成された場所を見つけることができるでしょうか?

編集:2016-04-27(解決済み)

以下の回答のおかげlsof |grep qmuxで、qmux_client_socketsアイテムの最後の列の番号がそれを使用するプロセスのPIDであることを確認しました。

回答:


6

このファイルを生成するコードは、カーネルソースのunix_seq_show()関数net/unix/af_unix.cにあります。見てみるとinclude/net/af_unix.h、使用中のデータ構造を参照することも有用です。

ソケットパスは常に出力の最後の列であり、Androidカーネルソースはこの点でストックカーネルと一致します。だから、私が誤解しない限り、列のように見えるその数は実際には別の列ではありません。

パスの合計の長さが108バイト未満である限り、UNIXドメインソケットには実質的に任意の名前を付けることができます。したがって、これらのパスがどのように見えるかについては、何も想定できません。それらの名前を選択しているユーザースペースコードが、タブ文字とそれに続く数字を使用しているか、または名前をスペースで特定の長さに埋め込んでいる可能性もあります。私の理論をテストするには、のソケットファイルを見てみてください/dev/socket/qmux_radio/


1
ありがとうございます。/dev/socket/qmux_radio/という名前の仮想ソケットオープナーだけの下に表示されるソケット番号はありませんqmux_client_socket。しかし、あなたの助けで私はpsどちらが同じかを確認しました。
not2qubit
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.