2012-01-11 11 views
23

में चल रहे कार्यक्रम मैं सेटअप ग्रहण में एक रन विन्यास और कार्यक्रम के लिए SIGINT (Ctrl +सी) भेजने की जरूरत है। प्रोग्राम में क्लीनअप कोड है जो एसआईजीआईएनटी के बाद चलता है, इसलिए एक्लिप्स के "टर्मिनेट" बटन दबाकर काम नहीं करेंगे (वे सिगकिल मुझे लगता है)। टाइपिंग कंट्रोल में CTRL + सी भी काम नहीं करता है।भेजा जा रहा है SIGINT (Ctrl-C) ग्रहण कंसोल

मैं ग्रहण कंसोल के अंदर चल रही प्रक्रिया में SIGINT कैसे भेजूं?

(Fwiw मैं एक मुड़ डेमॉन चला रहा हूँ और सही ढंग से बंद करने के लिए मुड़ जरूरत है, जो केवल SIGINT पर होता है)

उत्तर

7

आप इस तरह के ps के रूप में एक उपयोगिता के साथ प्रक्रिया निर्धारित कर सकते हैं, तो आप इसे एक भेजने के लिए उपयोग कर सकते हैं मार SIGINT। कार्यक्रम ग्रहण की एक बाल प्रक्रिया होगी।

kill -s INT <pid> 
+1

अभी मैं 'kill -INT \' pgrep python \ '' का उपयोग करता हूं, इसलिए मुझे पिड्स खोजने के लिए मकड़ी नहीं है, लेकिन यह भी तेजी से कोड/डीबग चक्र के लिए थोड़ा बोझिल है। – vsekhar

+0

यदि आप सभी पायथन प्रक्रियाओं को मारने पर ध्यान नहीं देते हैं तो आप इसे 'pkill -INT पायथन' तक छोटा कर सकते हैं। – jordanm

+1

तो सवाल का मुद्दा यह है कि मार + pgrep या pkill ब्लंट यंत्र हैं (और वास्तव में अन्य अजगर प्रक्रियाएं चल रही हैं जो क्लॉब्ड हो जाएंगी)। मैं एक और अधिक बढ़िया दृष्टिकोण की उम्मीद कर रहा हूं, और ग्रहण के माध्यम से CTRL-C ऐसा लगता है कि यह संभव होना चाहिए। – vsekhar

1

आप एक लाइन के माध्यम से आदेश भेज सकते हैं:

kill -SIGINT $(ps aux | grep ProgrammName | grep -v grep | awk '{print $2}') 

प्रक्रिया आईडी प्राप्त करने और से बस पूर्णता के लिए के लिए SIGINT संकेत

+6

पर Ctrl-Z आज़माएं छोटा: 'pkill -SIGINT -f प्रोग्राम नाम' –

0

भेजें:

Ctrl + जेड मेरे लिए काम करता है (विंडोज़ पर)।

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