2010-09-09 21 views
7

मुझे यह पता लगाने का एक अच्छा तरीका नहीं मिल रहा है कि कोई प्रक्रिया लिनक्स में कब निकलती है। क्या किसी के पास इसका समाधान है?लिनक्स में प्रक्रिया समाप्त होने पर कैसे पता लगाना है?

एक जिसे मैं सोच सकता हूं वह समय-समय पर जांच प्रक्रिया सूची है, लेकिन यह तत्काल और बहुत महंगा नहीं है (हर बार सभी प्रक्रियाओं पर लूप करना पड़ता है)।

क्या लिनक्स पर ऐसा करने के लिए कोई इंटरफ़ेस है? waitpid की तरह कुछ, सिंक्रेटेड प्रक्रियाओं से उपयोग किए जा सकने वाले कुछ को छोड़कर?

धन्यवाद, बोडा Cydo

+1

एक सी प्रोग्राम लिखें जो कांटा() एस और exec() एस? –

+0

अच्छा सुझाव डेव। मैं अभी इस तरह से ऐसा करने जा रहा हूं। – bodacydo

उत्तर

2

शायद आप एक अन्य कार्यक्रम के साथ एक साथ कार्यक्रम शुरू कर सकते हैं, दूसरा एक जो कुछ भी यह है कि आप क्या करना चाहते हैं जब पहला कार्यक्रम, बंद हो जाता है आदि

सूचना भेजकर की तरह कर रही है

इस बहुत ही सरल उदाहरण पर विचार करें:

sleep 10; echo "finished" 

sleep 10 पहली प्रक्रिया, echo "finished" दूसरा एक है (हालांकि गूंज आम तौर पर एक खोल प्लगइन है, लेकिन मुझे आशा है कि आप पी मिल ओंट)

1

यदि आप प्रश्न की प्रक्रिया के पीआईडी ​​को जानते हैं, तो आप जांच सकते हैं कि/proc/$ पीआईडी ​​मौजूद है या नहीं। यह अपेक्षाकृत सस्ते stat() कॉल है।

+1

यह काम नहीं करता है। एक दौड़ की स्थिति हो सकती है। – bodacydo

+0

दौड़ की स्थिति पर सहमति हुई। पिड्स को पुनर्नवीनीकरण मिलता है, इसलिए अकेले इस तकनीक का उपयोग करके, इस बात की कोई गारंटी नहीं है कि उस पिड के नीचे चल रही प्रक्रिया मूल प्रक्रिया है। –

4

आप एक असंबंधित प्रक्रिया, सिर्फ बच्चों के लिए इंतजार नहीं कर सकते।

प्रक्रिया सूची की जांच की तुलना में एक सरल मतदान विधि, यदि आपके पास अनुमति है, तो आप kill(2) सिस्टम कॉल का उपयोग कर सकते हैं और kill(2) आदमी पृष्ठ से "भेजें" संकेत 0.

:

हैं एसआईजी 0 है, तो कोई सिग्नल नहीं भेजा जाता है, लेकिन त्रुटि जांच अभी भी की जाती है; इस प्रक्रिया ID या प्रक्रिया समूह आईडी होने की जाँच करने के लिए इस्तेमाल किया जा सकता

2

एक अन्य विकल्प प्रक्रिया इस तरह के एक यूनिक्स डोमेन सॉकेट के रूप में एक भारतीय दंड संहिता ऑब्जेक्ट को खोलने के लिए है, आपकी निगरानी प्रक्रिया तब पता लगा सकती है जब प्रक्रिया समाप्त हो जाती है क्योंकि यह तुरंत बंद हो जाएगी।

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