2009-09-04 16 views

उत्तर

8

subprocess मॉड्यूल पर एक नज़र डालें। आप मॉड्यूल के माध्यम से fork() जैसे निम्न-स्तरीय प्राइमेटिव का भी उपयोग कर सकते हैं।

3

एक साधारण समारोह उपप्रक्रिया मॉड्यूल का उपयोग करता है:

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) 
0

आप उप के साथ बातचीत करने की जरूरत है प्रक्रिया बिल्कुल, मैं pexpect मॉड्यूल (link text) की सलाह देते हैं। आप प्रक्रिया में इनपुट भेज सकते हैं, रिटर्न में आउटपुट (या "उम्मीद") प्राप्त कर सकते हैं, और आप प्रक्रिया को बंद कर सकते हैं (बल के साथ = सिगकिल भेजने के लिए सही)।

13

यहां एक छोटी पायथन लिपि है जो एक प्रक्रिया शुरू करती है, जांचती है कि यह चल रहा है, थोड़ी देर इंतजार कर रहा है, इसे मारता है, इसे समाप्त करने की प्रतीक्षा करता है, फिर फिर से जांचता है। यह 'हत्या' कमांड का उपयोग करता है। पायथन उपप्रोसेस के संस्करण 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

आप 'os.kill (..)' प्रक्रिया –

+1

या यहाँ तक कि 'proc.terminate()' या 'proc.kill() को मारने के लिए उपयोग कर सकते हैं' के बाद से अजगर 2.6 –

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

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