मैं इस नमूना कोड है।क्यों मेरी अवधि पर कब्जा कर लिया नहीं की जा रही है
समस्या यह है कि, टीईआरएम यहां पर कब्जा नहीं किया जा रहा है और प्रक्रिया को समाप्त कर दिया गया है।
ruby test.rb
"sam 8828 0.0 0.0 30576 5052 pts/9 Rl+ 11:48 0:00 ruby -e trap('TERM'){ puts 'GOT TERM'; sleep 100; }; sleep 100\n"
""
हालांकि ... मैं सिर्फ अंडे के बाद सोने और एक अलग प्रक्रिया अवधि के रूप में उम्मीद कब्जा कर लिया है से मार जारी है।
pid = Process.spawn("exec ruby -e \"trap('TERM'){ puts 'GOT TERM'; sleep 100; }; sleep 100\"")
Thread.new do
Process.wait(pid)
end
puts pid
sleep 100
अन्य खोल
kill -TERM PID
आउटपुट
GOT TERM
इसके अलावा अधिक, अगर मैं करने के लिए प्रारंभिक प्रक्रिया से प्रक्रिया अपने हैंडलर अवधि में फंस नहीं रह मार डालेगा के बाद तो kill
कोशिश यह।
यहां क्या हो रहा है, टीईआरएम माता-पिता से मेरे बच्चे की प्रक्रिया में सही तरीके से क्यों नहीं पहुंचाया जा रहा है?
दिलचस्प ... आप किस ओएस पर हैं? मेरे लिए यह ठीक काम करता है (मैकोज़): ' 71794 0.0 0.1 2443544 2 9 32 एस 001 आर + 9:22 अपराह्न 0: 00.01 रूबी-एक जाल ('टीईआरएम') {डालता है 'टोरम'; नींद 100;}; नींद 100 \ n " मिल गया सावधि " 71794 0,6 0,2 2471356 8168 S001 एस + 21:22 0: 00.05 माणिक -e जाल ('TERM') {पुट 'TERM मिल गया', 100 सोने;}; सो 100 \ n " लिनक्स पर ' –
moonfly
... मुझे वास्तव में संदेह है कि यह लिनक्स विशिष्ट है और जिस तरह से" exec "संचालित होता है, एक दूसरा पिड शामिल हो रहा है –
ऐसा लगता है कि कई पीआईडी शामिल हो रहे हैं। मैं स्ट्रेस के माध्यम से व्यवहार की जांच कर रहा था, और आपकी स्क्रिप्ट के एक आमंत्रण के लिए पाया गया कुल 14 (1) पीआईडी ट्रेस फाइलें बनाई गई थीं। – orangejulius