Apa arti dari isi / proc / net / unix?


11

Pada perangkat Android saya ada file bernama /proc/net/unixsiapa konten tidak sesuai dengan distribusi linux standar (yang menunjukkan soket domain unix.) Beberapa baris pertama:

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) Untuk apa kolom-kolom ini berdiri?


EDIT : Ok saya menemukan ini :

Di sini 'Num' adalah nomor slot tabel kernel, 'RefCount' adalah jumlah pengguna soket, 'Protokol' saat ini selalu 0, 'Bendera' mewakili bendera kernel internal yang memegang status soket. Saat ini, ketik selalu '1' (soket data domain Unix belum didukung di kernel). 'St' adalah keadaan internal dari soket dan Path adalah jalur terikat (jika ada) dari soket.

Namun, itu tidak up-to-date karena kita memiliki typedan tidak mengklarifikasi apa yang dimaksud dengan "keadaan internal".

(2) Juga di ujung jalan, kadang-kadang ada nomor tambahan tanpa nama kolomnya sendiri. Apa itu?

Selain itu, di mana dalam kode sumber kernel saya bisa berharap untuk menemukan di mana ini dibuat?

EDIT: 2016-04-27 (Diselesaikan)

Terima kasih untuk jawaban di bawah ini, saya telah memastikan lsof |grep qmux, bahwa nomor pada kolom terakhir untuk qmux_client_socketsitem, adalah PID dari proses menggunakannya.

Jawaban:


6

Kode yang menghasilkan file ini ada dalam unix_seq_show()fungsi di net/unix/af_unix.cdalam sumber kernel . Melihat include/net/af_unix.hjuga bermanfaat, untuk melihat struktur data yang digunakan.

Jalur soket selalu merupakan kolom terakhir dalam output, dan sumber kernel Android cocok dengan kernel stok dalam hal ini. Jadi kecuali saya salah, angka yang terlihat seperti kolom sebenarnya bukan kolom yang terpisah.

Anda dapat memberi nama soket domain UNIX secara praktis apa pun yang Anda inginkan, selama total panjang jalur kurang dari 108 byte. Jadi Anda tidak bisa membuat asumsi seperti apa jalan ini akan terlihat. Ada kemungkinan bahwa kode userspace yang memilih nama-nama itu menggunakan karakter tab diikuti oleh angka, atau bahkan melapisi namanya hingga panjang tertentu dengan spasi. Untuk menguji teori saya, Anda dapat mencoba melihat file socket di /dev/socket/qmux_radio/.


1
Terima kasih, itu berhasil! Tidak ada nomor soket yang ditampilkan di bawah /dev/socket/qmux_radio/hanya pembuka soket virtual yang dinamai qmux_client_socket. Tetapi bantuan Anda membuat saya memeriksa psmana yang sama.
not2qubit
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.