क्या लिनक्स सिंक्रोनस में kill
फ़ंक्शन है? कहें, मैं प्रक्रिया को समाप्त करने के लिए kill
फ़ंक्शन को प्रोग्रामेटिक रूप से कॉल करता हूं, क्या यह केवल तभी वापस आ जाएगा जब इच्छित प्रक्रिया समाप्त हो जाती है, या यह सिग्नल भेजती है और वापस आती है। यदि ऐसा है, तो मैं इच्छित प्रक्रिया को मारने के लिए इसे कैसे इंतजार कर सकता हूं?हत्या समारोह सिंक्रोनस है?
उत्तर
नहीं, चूंकि यह कुछ भी नहीं मारता है, यह केवल प्रक्रिया को संकेत भेजता है।
डिफ़ॉल्ट रूप से इस सिग्नल को भी अवरुद्ध या अनदेखा किया जा सकता है।
आप kill -9
नहीं रोक सकते हैं जो SIGKILL
भेजने को दर्शाता प्रक्रिया मरने के लिए के लिए प्रतीक्षा करने के लिए:
while kill -0 PID_OF_THE_PROCESS 2>/dev/null; do sleep 1; done
+1 जब तक पिड खत्म नहीं हो जाता है, प्रतीक्षा करने की एक सरल विधि दिखाने के लिए +1। –
सिगकिल को किसी प्रक्रिया द्वारा अवरुद्ध या अनदेखा नहीं किया जा सकता है। लेकिन आप सही हैं कि प्रक्रिया तुरंत समाप्त नहीं होगी। यदि कोई प्रक्रिया सिस्टम कॉल कर रही है, तो यह केवल तभी समाप्त होगा जब सिस्टम कॉल रिटर्न हो। तो अगर यह कुछ वास्तविक भारी प्रसंस्करण करता है, तो इसमें समय लग सकता है। – ugoren
यह मरने से इंकार कर देगा अगर यह 'अनइंटरप्टीबल' की स्थिति में है –
मार सिस्टम कॉल कुछ भी करने को अन्य प्रक्रिया के लिए प्रतीक्षा नहीं करता है। संकेत लक्ष्य प्रक्रिया और सिस्टम कॉल रिटर्न पर पोस्ट किया गया है। लक्षित प्रक्रिया सिग्नल को नोटिस करती है जब इसे चलाने के लिए निर्धारित किया जाता है।
kill
सिंक्रोनस नहीं हो सकता क्योंकि यह केवल सिग्नल भेजता है। लक्ष्य प्रक्रिया इनकमिंग सिग्नल (सीएफ SIG_IGN
) को अनदेखा कर सकती है, इसलिए kill
के प्रभाव के बारे में कोई गारंटी नहीं है।
इस परिकल्पना को सत्यापित करने के लिए प्रयोग करना मुश्किल नहीं होना चाहिए। प्रक्रिया ए शुरू करें और इसे मरने से पहले 10 सेकंड नींद के साथ SIGTERM
संभाल लें। फिर प्रक्रिया बी शुरू करें, जो SIGTERM
ए को वितरित करता है और तुरंत बाहर निकलता है।
- सं
man 2 kill
man wait
भी देखें man 7 signal
यूनिक्स संकेतों के बारे में अधिक जानकारी के लिए।
- 1. टेबल मूल्य समारोह हत्या मेरे जिज्ञासा प्रदर्शन
- 2. सिंक्रोनस स्टार्टएक्टिविटीफॉररसल्ट -
- 3. पीएचपी - हत्या बच्चे प्रक्रिया pcntl_fork
- 4. जोर सिंक्रोनस या असीमित है?
- 5. valgrind "हत्या" संदेश
- 6. पायथन हत्या धागा
- 7. कोड स्पष्टता हत्या प्रदर्शन आवेदन है?
- 8. EXT जेएस सिंक्रोनस AJAX अनुरोध
- 9. आईई सिंक्रोनस xmlhttprequest
- 10. सिंक्रोनस क्यूई एक्स एक्सचेंजर
- 11. .NET C# सिंक्रोनस रिसीव
- 12. सिंक्रोनस "अजाक्स" अनुरोध
- 13. एंड्रॉइड स्टार्ट सेवा सिंक्रोनस?
- 14. jquery सिंक्रोनस फ़ंक्शंस
- 15. सी # सिंक्रोनस प्रक्रिया
- 16. FB.api() को सिंक्रोनस
- 17. सिंक्रोनस और एसिंक्रोनस गतिविधियां
- 18. सिंक्रोनस और एसिंक्रोनस कॉलबैक
- 19. हत्या बच्चे प्रक्रिया जब अजगर
- 20. हत्या प्रक्रिया (विंडोज़ 8) मुद्दे
- 21. मुझे सिंक्रोनस क्यूयू
- 22. बैकबोन का ट्रिगर() सिंक्रोनस या असिंक्रोनस है?
- 23. ko.apply सिंक्रोनस या असिंक्रोनस बाइंडिंग है?
- 24. एचटीएमएल 5 डाटाबेस एपीआई: सिंक्रोनस अनुरोध
- 25. असीमित Google विज्ञापन बनाम सिंक्रोनस
- 26. क्रोम में सिंक्रोनस कंसोल लॉगिंग
- 27. रूबी/रेल सिंक्रोनस जॉब मैनेजर
- 28. क्या jQuery ट्रिगर फ़ंक्शन सिंक्रोनस
- 29. सिंक्रोनस Moq mocks को async
- 30. एक्शन टी सिंक्रोनस और एसिंक्रोनस
अनजाने में, मैं नहीं कह सकता, क्योंकि मैंने प्रक्रिया पर 'हत्या' का उपयोग किया है, इसे वापस करने के लिए और प्रक्रिया अभी भी मौजूद है। फिर 'मार -9' करना था। –
नोट: सभी सिग्नल जो आप किसी प्रक्रिया को भेज सकते हैं * * इसे समाप्त नहीं करेंगे - यहां तक कि '1234 मार डालें' ('SIGTERM' का उपयोग करके) फंस और बाईपास किया जा सकता है। बिना शर्त तरीके से मारने का एकमात्र तरीका 'kill -9' का उपयोग करना है, जो क्रूर है (सफाई के लिए कोई मौका नहीं है)। – Piskvor
यहां तक कि 'हत्या -9' भी हमेशा इसे मारता है, क्योंकि कुछ राज्य (विशेष रूप से, राज्य "डी") होते हैं जिसमें यह तब तक मर नहीं जाएगा जब तक कि कर्नेल थ्रेड खत्म नहीं हो जाता। –