/proc/net/unix 的內容是什麼意思?
在我的 Android 設備上,有一個名為
/proc/net/unix
who’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
最後一列中的數字是使用它的程序的PID。qmux_client_sockets
生成此文件的程式碼位於核心原始碼
unix_seq_show()
中的函式中。查看也很有幫助,可以查看正在使用的資料結構。net/unix/af_unix.c
include/net/af_unix.h
套接字路徑始終是輸出中的最後一列,Android 核心原始碼在這方面與股票核心相匹配。所以除非我弄錯了,那個看起來像一列的數字實際上並不是一個單獨的列。
只要總路徑長度小於 108 字節,您幾乎可以將 UNIX 域套接字命名為任何您想要的名稱。因此,您無法對這些路徑的外觀做出任何假設。選擇這些名稱的使用者空間程式碼可能使用製表符後跟一個數字,或者甚至用空格將名稱填充到一定長度。要測試我的理論,您可以嘗試查看
/dev/socket/qmux_radio/
.