मैं एक प्रक्रिया शुरू करने में सक्षम होना चाहता हूं और उसके बाद इसे मारने में सक्षम होना चाहिएक्या पाइथन के साथ लिनक्स प्रक्रियाओं को शुरू/बंद करने का कोई तरीका है?
उत्तर
subprocess
मॉड्यूल पर एक नज़र डालें। आप मॉड्यूल के माध्यम से fork()
जैसे निम्न-स्तरीय प्राइमेटिव का भी उपयोग कर सकते हैं।
एक साधारण समारोह उपप्रक्रिया मॉड्यूल का उपयोग करता है:
def CMD(cmd) :
p = subprocess.Popen(cmd, shell=True,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
close_fds=False)
return (p.stdin, p.stdout, p.stderr)
आदिम कांटा() और मॉड्यूल subprocess, multiprocessing के लिए दस्तावेज़ देख सकेंगे, multithreading
आप उप के साथ बातचीत करने की जरूरत है प्रक्रिया बिल्कुल, मैं pexpect मॉड्यूल (link text) की सलाह देते हैं। आप प्रक्रिया में इनपुट भेज सकते हैं, रिटर्न में आउटपुट (या "उम्मीद") प्राप्त कर सकते हैं, और आप प्रक्रिया को बंद कर सकते हैं (बल के साथ = सिगकिल भेजने के लिए सही)।
यहां एक छोटी पायथन लिपि है जो एक प्रक्रिया शुरू करती है, जांचती है कि यह चल रहा है, थोड़ी देर इंतजार कर रहा है, इसे मारता है, इसे समाप्त करने की प्रतीक्षा करता है, फिर फिर से जांचता है। यह 'हत्या' कमांड का उपयोग करता है। पायथन उपप्रोसेस के संस्करण 2.6 में एक हत्या का कार्य है। यह 2.5 पर लिखा गया था।
import subprocess
import time
proc = subprocess.Popen(["sleep", "60"], shell=False)
print 'poll =', proc.poll(), '("None" means process not terminated yet)'
time.sleep(3)
subprocess.call(["kill", "-9", "%d" % proc.pid])
proc.wait()
print 'poll =', proc.poll()
समय उत्पादन से पता चलता है कि यह नींद से पता चलता है करने के लिए फोन के रूप में के बारे में 3 सेकंड के बाद समाप्त किया गया है, और नहीं 60।
$ time python prockill.py
poll = None ("None" means process not terminated yet)
poll = -9
real 0m3.082s
user 0m0.055s
sys 0m0.029s
- 1. क्या लिनक्स को डिकंपाइल करने का कोई तरीका है। तो?
- 2. क्या लिनक्स में प्रक्रियाओं की वर्तमान संख्या प्राप्त करने का हल्का तरीका है?
- 3. क्या पाइथन के साथ 3 डी में प्राइमेटिव आकर्षित करने का कोई तरीका है?
- 4. क्या पाइथन कक्षा में सभी कार्यों को लूप करने और निष्पादित करने का कोई तरीका है?
- 5. क्या लिनक्स पाइप के प्रदर्शन में सुधार करने का कोई तरीका है?
- 6. क्या लिनक्स में स्क्रीनसेवर को बाधित करने का कोई शानदार तरीका है?
- 7. क्या लिनक्स कर्नेल मॉड्यूल का उपयोग करने का पता लगाने का कोई तरीका है?
- 8. क्या ऐसा करने का कोई तरीका है?
- 9. क्या पीईडीईवी में आरईपीएल प्राप्त करने का कोई तरीका है?
- 10. क्या सभी ऑरैकल पैकेज और प्रक्रियाओं की पूरी पाठ खोज करने का कोई तरीका है?
- 11. क्या वाईएक्स बिल्ड को तेज करने का कोई तरीका है?
- 12. क्या ओपनिड को लागू करने का कोई आसान तरीका है?
- 13. क्या TabControl.Items.CurrentChanging को रद्द करने का कोई तरीका है?
- 14. क्या YQL को HTML वापस करने का कोई तरीका है?
- 15. क्या SQLLataReader को मल्टीथ्रेड करने का कोई तरीका है?
- 16. प्रक्रियाओं के बीच कोर डेटा स्टोर साझा करने का कोई तरीका है?
- 17. पाइथन के साथ जावा उत्पन्न करने का सबसे अच्छा तरीका?
- 18. क्या मूसोम घटना को तेज करने का कोई तरीका है?
- 19. क्या पाइथन शाप आवेदन को इंटरैक्टिव रूप से प्रोग्राम करने का कोई तरीका है?
- 20. क्या कोई लेबल अक्षम करने का कोई तरीका है?
- 21. क्या पाइथन में सभी उपलब्ध ड्राइव अक्षरों को सूचीबद्ध करने का कोई तरीका है?
- 22. संस्करण को मेरे SQL सर्वर संग्रहीत प्रक्रियाओं को नियंत्रित करने का सबसे अच्छा तरीका क्या है?
- 23. क्या कोई जेड-इंडेक्स सर्कल करने का कोई तरीका है?
- 24. क्या पाइथन के साथ ग्रहण प्लगइन्स बनाने का कोई तरीका है?
- 25. क्या एचएटीओएम माइक्रोफॉर्मेट को सत्यापित करने का कोई तरीका है?
- 26. क्या रननेबल को पैरामीटर पास करने का कोई तरीका है?
- 27. क्या स्ट्रिंग को छोटा करने का कोई और तरीका है?
- 28. क्या configManager.AppSettings को ओवरराइड करने का कोई तरीका है?
- 29. क्या पर्ल के साथ विंडोज़ में व्यवस्थापक अधिकारों की जांच करने का कोई तरीका है?
- 30. क्या सी संरचना को डंप करने का कोई तरीका है?
आप 'os.kill (..)' प्रक्रिया –
या यहाँ तक कि 'proc.terminate()' या 'proc.kill() को मारने के लिए उपयोग कर सकते हैं' के बाद से अजगर 2.6 –