node.js प्रक्रिया से बाहर निकलने पर सभी बाल प्रक्रियाओं को कैसे मारें (child_process.spawn का उपयोग करके उत्पन्न)?बाहर निकलने पर सभी बाल प्रक्रियाओं को कैसे मारें?
उत्तर
मुझे लगता है कि ऑब्जेक्ट spawn
द्वारा लौटाया गया ऑब्जेक्ट का संदर्भ रखने का एकमात्र तरीका है, और मास्टर प्रक्रिया से बाहर निकलने पर इसे मार दें।
एक छोटा सा उदाहरण:
var spawn = require('child_process').spawn;
var children = [];
process.on('exit', function() {
console.log('killing', children.length, 'child processes');
children.forEach(function(child) {
child.kill();
});
});
children.push(spawn('/bin/sleep', [ '10' ]));
children.push(spawn('/bin/sleep', [ '10' ]));
children.push(spawn('/bin/sleep', [ '10' ]));
setTimeout(function() { process.exit(0) }, 3000);
मेरे मैक पर, किसी भी बच्चे के प्रोप्रोनिस शुरू हो जाते हैं जब मुख्य नोड प्रक्रिया खत्म। शायद यह ओएस विशिष्ट है? – AndyD
मेरे मैक पर (10.8.3) वे आगे बढ़ते रहते हैं: ऊपर दिए गए कोड के साथ, जब मैं 'child.kill()' पर टिप्पणी करता हूं, तो मैं संक्षेप में (10 सेकंड ऊपर तक) आउटपुट में तीन 'नींद' प्रक्रियाओं को देखता हूं मास्टर प्रक्रिया के बाद 'ps' बंद हो गया है (हालांकि उन प्रक्रियाओं को खोल के नियंत्रक टर्मिनल से जोड़ा जाता है; जब मैं खोल को मारता हूं, तो वे चले जाते हैं)। – robertklep
दिलचस्प। मेरी बाल प्रक्रिया एक प्रेतोज़ प्रक्रिया है। शायद वह अलग व्यवहार करता है। यदि उपरोक्त कोड बदलता है तो मैं उपरोक्त कोड का उपयोग करूंगा। (10.8.0) – AndyD
@ robertklep के जवाब देने के लिए जोड़ने के लिए:
हैं, मेरे जैसे, आप जब नोड बाहर से हत्या कर दी जा रही है ऐसा करना चाहते हैं, बल्कि अपनी ही पसंद के से , आपको सिग्नल के साथ कुछ चालबाजी करना है।
कुंजी जो कुछ संकेत (रों) आप के साथ मारा जा सकता है के लिए, नहीं तो नोड डिफ़ॉल्ट रूप से process
पर exit
उत्सर्जन नहीं होगा सुनने और process.exit()
कॉल करने के लिए है!
var cleanExit = function() { process.exit() };
process.on('SIGINT', cleanExit); // catch ctrl-c
process.on('SIGTERM', cleanExit); // catch kill
यह करने के बाद, आप बस exit
को process
पर सामान्य रूप से सुन सकते हैं।
एकमात्र मुद्दा SIGKILL
पकड़ा नहीं जा सकता है, लेकिन यह डिज़ाइन द्वारा किया गया है। आपको kill
आईएनजी SIGTERM
(डिफ़ॉल्ट) के साथ होना चाहिए।
अधिक के लिए this question देखें।
- 1. सभी बाल प्रक्रियाओं को कैसे ढूंढें?
- 2. zsh में सभी पृष्ठभूमि प्रक्रियाओं को कैसे मारें?
- 3. बाहर निकलने से पहले पर्ल में बाल प्रक्रियाओं को मारने का सही तरीका क्या है?
- 4. एक लटका बाल प्रक्रिया को मारें
- 5. JVM बाहर निकलने पर लटका
- 6. रूबी के अंदर सभी प्रक्रियाओं को कैसे मारें थोर थोर पर?
- 7. एंड्रॉइड - लॉगआउट पर सभी गतिविधियों को मारें
- 8. बाहर निकलने पर डबल पुष्टिकरण
- 9. UIDocumentInteractionController बाहर निकलने पर क्रैशिंग
- 10. स्पार्क: शैल से बाहर निकलने के बिना चल रही प्रक्रिया को कैसे मारें?
- 11. बाहर निकलने पर एसिंक ऑपरेशन कैसे करें
- 12. जेनकिंस बाल प्रक्रियाओं को कैसे सीमित करें?
- 13. माता-पिता को सभी बाल प्रक्रियाओं के लिए प्रतीक्षा करें
- 14. नाम से प्रक्रियाओं को कैसे मारें? (Win32 एपीआई)
- 15. बाल प्रक्रियाओं की संख्या
- 16. बाहर निकलने के कार्यक्रम पर एंड्रॉइड एप्लिकेशन
- 17. गैर-बच्चों की प्रक्रियाओं से बाहर निकलने के लिए कैसे प्रतीक्षा करें
- 18. बाल थ्रेड द्वारा शुरू की गई प्रक्रिया को कैसे मारें?
- 19. डॉकर कंटेनर का पीआईडी 1 बाहर निकलने पर अन्य प्रक्रियाओं का क्या होता है?
- 20. पर्यवेक्षक समय-समय पर बाल प्रक्रियाओं को पुनरारंभ करें
- 21. मल्टीप्रोसेस में सभी पूल श्रमिकों को कैसे मारें?
- 22. कार्यक्रम बाहर निकलने के
- 23. नोहुप प्रक्रिया को कैसे मारें?
- 24. किसी दिए गए आंशिक नाम के साथ सभी प्रक्रियाओं को कैसे मारें?
- 25. पायथन Multiprocessing बाहर निकलने त्रुटि
- 26. बाल प्रक्रियाओं को जन्म देने पर गुल निर्भरताओं का प्रबंधन
- 27. पावरहेल प्रोफ़ाइल "बाहर निकलने पर" घटना?
- 28. पीईक्यूटी आवेदन में बाहर निकलने पर संकेत
- 29. कंसोल बंद होने पर एप्लिकेशन को बाहर निकलने से रोकें
- 30. एंड्रॉयड बाहर निकलने SQLite खोल
[इसे एक संदर्भ दें] (http://stackoverflow.com/questions/5266152/how-to-exit-in-node-js) – karthick