2010-01-04 17 views
39

लिनक्स में किसी अन्य प्रक्रिया में भेज सकता हूं, क्या मेरे लिए सॉकेट खोलना और सॉकेट को दूसरी प्रक्रिया में पास करना संभव है? यदि हां, तो क्या आप कृपया मुझे बता सकते हैं कि मुझे एक उदाहरण कहां मिल सकता है?क्या मैं सॉकेट खोल सकता हूं और इसे लिनक्स

धन्यवाद।

+0

संभावित डुप्लिकेट [क्या मैं लिनक्स पर किसी अन्य प्रक्रिया में फ़ाइल डिस्क्रिप्टर साझा कर सकता हूं या वे प्रक्रिया के लिए स्थानीय हैं?] (Http://stackoverflow.com/questions/2358684/can-i-share-a-file- वर्णनकर्ता-टू-ए-प्रोसेस-ऑन-लिनक्स-या-वे-वे-स्थानीय-टू-टी) – Gilles

उत्तर

53
एक प्रक्रिया से SCM_RIGHTS साथ

हाँ आप कर सकते हैं, का उपयोग कर sendmsg() दूसरे करने के लिए:

SCM_RIGHTS - भेजें या किसी अन्य प्रक्रिया से खुले फ़ाइल वर्णनकर्ता का एक सेट प्राप्त करते हैं। डेटा भाग में फ़ाइल वर्णनकर्ताओं की पूर्णांक सरणी शामिल है। उत्तीर्ण फ़ाइल वर्णनकर्ता के रूप में व्यवहार करते हैं हालांकि उन्हें dup(2) के साथ बनाया गया है।

http://linux.die.net/man/7/unix

हालांकि विशिष्ट उपयोग नहीं है यही कारण है कि। अधिक आम बात यह है कि जब किसी प्रक्रिया को अपने माता-पिता से सॉकेट प्राप्त होता है (fork() के बाद)। कोई फ़ाइल हैंडल (सॉकेट समेत) बंद नहीं है, बच्चे की प्रक्रिया के लिए उपलब्ध होगी। तो बच्चे की प्रक्रिया माता-पिता के सॉकेट को विरासत में ले जाती है।

कनेक्शन की सुनवाई करने वाली एक सर्वर प्रक्रिया को डिमन कहा जाता है। यह आमतौर पर प्रत्येक नए कनेक्शन को संभालने के लिए एक प्रक्रिया को उत्पन्न करने के लिए प्रत्येक नए कनेक्शन पर कांटा जाता है। ठेठ डेमॉन का एक उदाहरण यहाँ है:

http://www.steve.org.uk/Reference/Unix/faq_8.html#SEC88

नीचे स्क्रॉल process() शून्य करने के लिए।

+14

जब तक आप प्रत्येक अनुरोध के लिए एक नई प्रक्रिया नहीं करना चाहते हैं, लेकिन केवल कर्मचारियों के एक सेट पर अनुरोध पास करें । – magiconair

+0

यह AF_UNIX के लिए विशिष्ट दिखता है। क्या यह टीसीपी सॉकेट के लिए किया जा सकता है? –

+5

@AdrianRatnapala: नहीं, आप किसी अन्य मशीन पर टीसीपी पर सॉकेट (या फ़ाइल हैंडल) नहीं भेज सकते हैं, उन्हें एक ही कर्नेल में रहना चाहिए। तो जिस चैनल पर आप संवाद करते हैं वह AF_UNIX होना चाहिए, लेकिन आपके द्वारा स्थानांतरित फ़ाइल संभाल निश्चित रूप से एक टीसीपी सॉकेट हो सकती है। – Zarat

संबंधित मुद्दे