में काम करते समय पाइथन में Ctrl-C कीबोर्ड को बाधित करें, मैं कुछ स्क्रिप्ट्स (जिस कंपनी में मैं काम करता हूं) पर काम कर रहा हूं जो किसी घटना के दौरान कोड के टुकड़े को आग लगाने के लिए हाइपरवाइजर में लोड/अनलोड किया जाता है। वास्तव में एक स्क्रिप्ट को अनलोड करने का एकमात्र तरीका है Ctrl - सी। मैं पाइथन में एक फ़ंक्शन लिख रहा हूं जो प्रक्रिया को स्वचालित करता हैलिनक्स
जैसे ही यह प्रोग्राम के आउटपुट में "done"
स्ट्रिंग को देखता है, इसे vprobe
को मारना चाहिए। मैं subprocess.Popen
उपयोग कर रहा हूँ आदेश पर अमल करने के लिए:
lineList = buff.readlines()
cmd = "vprobe /vprobe/myhello.emt"
p = subprocess.Popen(args = cmd, shell=True,stdout = buff, universal_newlines = True,preexec_fn=os.setsid)
while not re.search("done",lineList[-1]):
print "waiting"
os.kill(p.pid,signal.CTRL_C_EVENT)
आप देख सकते हैं, मैं buff
फ़ाइल वर्णनकर्ता पढ़ने + लिखने मोड में खोला में उत्पादन लिख रहा हूँ। मैं आखिरी पंक्ति की जांच करता हूं; अगर इसमें 'done'
है, तो मैं इसे मार डालता हूं। दुर्भाग्य से, CTRL_C_EVENT
केवल विंडोज के लिए मान्य है। लिनक्स के लिए मैं क्या कर सकता हूं?
FYI करें उदाहरण के लिए: 'एक निरंतर तार के साथ re.search' बेहतर रूप में' व्यक्त किया जा सकता है, जबकि lineList में नहीं 'पूर्ण' [-1]: ... ' – nneonneo
हाँ, आप सही हैं। धन्यवाद। –