ความหมายของเนื้อหาของ / 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) คอลัมน์ต่าง ๆ เหล่านี้มีไว้เพื่ออะไร


แก้ไข : ตกลงฉันได้พบสิ่งนี้ :

ที่นี่ 'Num' คือหมายเลขสล็อตของตารางเคอร์เนล 'RefCount' คือจำนวนผู้ใช้ของซ็อกเก็ต 'Protocol' อยู่เสมอ 0, 'Flags' แทนค่าสถานะเคอร์เนลภายในที่ถือสถานะของซ็อกเก็ต ปัจจุบันประเภทคือ '1' เสมอ (ซ็อกเก็ตแกรมข้อมูล data-unam ยังไม่สนับสนุนในเคอร์เนล) '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ตรงกับเคอร์เนลหุ้นในส่วนนี้ ดังนั้นถ้าฉันเข้าใจผิดหมายเลขนั้นที่ดูเหมือนคอลัมน์ไม่ใช่คอลัมน์ที่แยกกันจริงๆ

คุณสามารถตั้งชื่อซ็อกเก็ตโดเมน UNIX ได้ทุกอย่างที่คุณต้องการตราบใดที่ความยาวพา ธ รวมน้อยกว่า 108 ไบต์ ดังนั้นคุณไม่สามารถตั้งสมมติฐานได้ว่าเส้นทางเหล่านี้จะเป็นอย่างไร อาจเป็นไปได้ว่ารหัส userspace ที่เลือกชื่อเหล่านั้นกำลังใช้อักขระแท็บตามด้วยตัวเลขหรือแม้แต่การขยายชื่อออกไปตามความยาวที่กำหนดพร้อมช่องว่าง /dev/socket/qmux_radio/เพื่อทดสอบทฤษฎีของฉันคุณอาจลองมองหาที่ไฟล์ซ็อกเก็ตใน


1
ขอบคุณที่ทำ! ไม่มีหมายเลขซ็อกเก็ตแสดงภายใต้เป็นเพียงเปิดซ็อกเก็ตเสมือนชื่อ/dev/socket/qmux_radio/ qmux_client_socketแต่ความช่วยเหลือของคุณทำให้ฉันตรวจสอบpsสิ่งที่เหมือนกัน
not2qubit
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.