2010-07-23 7 views
14

मैं सॉकेट जानकारी को /proc/net/tcp से पार्स करने की कोशिश कर रहा हूं और जब मैं कुछ फ़ील्ड, जैसे मेमोरी एड्रेस या कतार के उपयोग को भेज सकता हूं, तो मुझे नहीं पता कि प्रत्येक प्रविष्टि अपने सॉकेट डिस्क्रिप्टर से कैसे जुड़ी है। उदाहरण के लिए, इस डेटा के साथ:मैं प्रत्येक खुली सॉकेट में प्रत्येक/proc/net/tcp प्रविष्टि से कैसे मिलान कर सकता हूं?

1: 5922140A:E459 D5C43B45:0050 01 00000000:00000000 00:00000000 00000000 1000  0 507218 1 f6ab1300 57 3 12 4 -1 

मैं जानना चाहता हूं कि संवाददाता सॉकेट डिस्क्रिप्टर कौन सा है।

+0

क्या आपका मतलब है मालिक की प्रक्रिया के लिए फ़ाइल डिस्क्रिप्टर नंबर, या क्या आप उस सॉकेट के मालिक की प्रक्रिया जानना चाहते हैं? –

+0

हाँ, फाइल डिस्क्रिप्टर। –

+0

@MattJoiner - हाय मैट, किसी दिए गए सॉकेट के मालिक की प्रक्रिया को कैसे जानें? – Suman

उत्तर

13

आइनोड संख्या ले लो (इस मामले, 507,218 में)। कि सॉकेट से प्रत्येक फ़ाइल खोलने वर्णनकर्ता (वहाँ एक ही सॉकेट के लिए एक से अधिक फ़ाइल वर्णनकर्ता हो सकता है) प्रपत्र की एक कड़ी के रूप में दिखाई देगा:

/proc/<PID>/fd/<N> -> socket[507218] 

(जहां <PID> प्रक्रिया ID है और <N> फ़ाइल की जानकारी देता है)।

+0

बढ़िया! आपका बहुत बहुत धन्यवाद! –