web-dev-qa-db-ja.com

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

私のAndroidデバイスには、/proc/net/unixというファイルがあります content はどの standard 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)これらの異なる列は何を表していますか?


[〜#〜] edit [〜#〜]:Ok見つかりました this

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

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

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

さらに、カーネルソースコードのどこに作成されたのか、どこでわかると思いますか?

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

以下の回答のおかげで、私はlsof |grep qmuxを通じて、qmux_client_socketsアイテムの最後の列の番号が[〜#〜] pid [〜であることを確認しましたそれを使用するプロセスの#〜]

11
not2qubit

このファイルを生成するコードは、 _net/unix/af_unix.c_ in the kernel sourceunix_seq_show()関数にあります。 _include/net/af_unix.h_ を見ることも、使用中のデータ構造を確認するのに役立ちます。

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

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

6
Jander