Filesystems

/proc/net/unix 的內容是什麼意思?

  • December 24, 2019

在我的 Android 設備上,有一個名為/proc/net/unixwho’s content的文件 不符合任何標準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’是socket的使用者數,‘Protocol’目前總是0,‘Flags’代表持有socket狀態的內部核心標誌。目前,類型始終為 ‘1’(核心尚不支持 Unix 域數據報套接字)。‘St’ 是套接字的內部狀態,Path 是套接字的綁定路徑(如果有)。

但是,這不是最新的,因為我們有一個type並且沒有澄清“內部狀態”的含義。

(2) 同樣在路徑的末尾,有時會有一個沒有自己的列名的附加數字。那是什麼?

此外,我可以在核心原始碼的什麼位置找到它的創建位置?

編輯:2016-04-27(已解決)

感謝下面的回答,我已經通過 確認,項目lsof |grep qmux最後一列中的數字是使用它的程序的PIDqmux_client_sockets

生成此文件的程式碼位於核心原始碼unix_seq_show()中的函式中。查看也很有幫助,可以查看正在使用的資料結構。net/unix/af_unix.cinclude/net/af_unix.h

套接字路徑始終是輸出中的最後一列,Android 核心原始碼在這方面與股票核心相匹配。所以除非我弄錯了,那個看起來像一列的數字實際上並不是一個單獨的列。

只要總路徑長度小於 108 字節,您幾乎可以將 UNIX 域套接字命名為任何您想要的名稱。因此,您無法對這些路徑的外觀做出任何假設。選擇這些名稱的使用者空間程式碼可能使用製表符後跟一個數字,或者甚至用空格將名稱填充到一定長度。要測試我的理論,您可以嘗試查看/dev/socket/qmux_radio/.

引用自:https://unix.stackexchange.com/questions/183140