मेरा प्रोग्राम एक विशिष्ट स्क्रिप्ट निष्पादित करता है, जिसके बाद यह एक .bat (बैच) फ़ाइल निष्पादित करके पॉपेन विधि के माध्यम से एक प्रक्रिया बनाता है।

.bat फ़ाइल, बदले में, दूसरी .exe फ़ाइल निष्पादित करती है। मेरे लिए समस्या तब उत्पन्न होती है जब मैं .exe फ़ाइल प्रक्रिया को समाप्त करने के लिए बस p.kill() चलाने की कोशिश कर रहा हूं। बैट फ़ाइल शुरू हो गई है।

सभी प्रक्रियाओं को समाप्त करने के बजाय, यह केवल .bat फ़ाइल प्रक्रिया को समाप्त करने का प्रयास करता है, लेकिन .exe फ़ाइल की प्रक्रिया को नहीं, जिसे .bat फ़ाइल ने बनाया है।

क्या मेरे लिए विशेष रूप से .exe प्रक्रिया को मारने का कोई तरीका है?

UPD: ऐसा लगता है कि .bat फ़ाइल एक अलग .exe प्रक्रिया बनाती है जिसे मैं केवल p.kill() के साथ समाप्त नहीं कर सकता, क्योंकि इसमें .bat की फ़ाइल प्रक्रिया से अलग pid है।

मैंने इसे os.system("taskkill /F /im process.exe") चलाने के साथ मारने की कोशिश की, लेकिन इसने .exe प्रक्रिया को नहीं छुआ। हैरानी की बात है कि कंसोल में एक ही टास्ककिल कमांड चलाने से यह खत्म हो गया।

2
TimesAndPlaces 29 नवम्बर 2019, 04:52

1 उत्तर

सबसे बढ़िया उत्तर

मैं subprocess.call("taskkill /F /im process.exe") चलाकर समस्या को हल करने में कामयाब रहा।

मुझे यकीन नहीं है कि os.system ने पहली बार में काम क्यों नहीं किया, शायद यह इसकी पुरानी प्रकृति के कारण है। उम्मीद है, यह उन लोगों की मदद करता है जो इसी तरह की समस्या का सामना करेंगे!

0
TimesAndPlaces 30 नवम्बर 2019, 18:26