मुझे एक प्रोग्राम लिखना होगा जो उस मशीन पर चलने के अपने दूसरे उदाहरण के बारे में अवगत होना चाहिए, और इसके साथ संवाद करें, फिर मर जाएं। मैं जानना चाहता हूं कि लिनक्स में ऐसा करने का एक कैननिक तरीका है या नहीं।एक ही प्रोग्राम की अन्य प्रक्रियाओं के बारे में जागरूक प्रक्रिया कैसे करें
मेरी पहली सोचा somewere प्रक्रिया के पीआईडी वाली फ़ाइल हर बार कार्यक्रम कार्यान्वित लिखते हैं, और उस फ़ाइल के लिए देखने के लिए गया था, लेकिन जहां "सही" जगह और उस फ़ाइल के लिए नाम क्या है? क्या कोई बेहतर, या अधिक "सही" तरीका है?
तो मुझे यह कहना चाहिए कि उपयोगकर्ता इसे चलाने की कोशिश कर रहा है, लेकिन चूंकि एक और उदाहरण है, यह नौकरी और बाहर निकल जाएगा। मैंने सिग्सआरआर 1 की तरह सिग्नल भेजने का सोचा, लेकिन इससे मुझे एक्स 11 डिस्प्ले की तरह अधिक जानकारी भेजने की इजाजत नहीं दी जाएगी, जहां से उपयोगकर्ता ने दूसरी प्रक्रिया को निष्पादित किया था। यह जानकारी कैसे भेजें?
कार्यक्रम जीटीके के खिलाफ जुड़ा हुआ है, इसलिए ग्लिब का उपयोग करने वाला एक समाधान ठीक है।
अकेले एक पिड फ़ाइल बहुत बेकार है। यदि एप्लिकेशन क्रैश हो जाता है तो यह उसकी पिड फ़ाइल को हटा नहीं सकता है ताकि इसे मैन्युअल रूप से हटा दिया जाए। एक बेहतर विकल्प है कि पिड फ़ाइल को लॉक करना, क्योंकि ओएस हमेशा लॉक को रिलीज़ करता है जब प्रक्रिया किसी भी तरह समाप्त हो जाती है। आप 'ls -la' कर कर हालांकि लॉक नहीं देख सकते हैं। एक यूनिक्स डोमेन सॉकेट अकेला है। –
@ मैक्सिम: झूठी। 'अनलिंक (...) फ़ाइल बंद होने के बाद फ़ाइल हटा देता है। तो 'एफडी = खुला (पथ, ...); अनलिंक (पथ); 'एक अस्थायी फ़ाइल रखने के लिए सामान्य चाल है। – Alexandru
@Alexandru: लगभग सही, आप इस तथ्य से चूक गए कि हम पिड फाइलों पर चर्चा कर रहे थे, अस्थायी फाइल नहीं। आवेदन समाप्त होने से पहले पीआईडी फ़ाइल को हटाया नहीं जाना चाहिए। –