在OS X中使用Python在一段时间后杀死一个子进程

时间:2016-07-16 18:46:29

标签: python macos subprocess

我编写了一个python脚本来启动子进程,然后想要在n秒的间隔后终止它。当我使用time.sleep(n)时它不会杀死进程但是当我删除这个睡眠部分时,它会通过使用os.kill(proc.pid,signal.SIGKILL)来杀死它。有人可以帮我吗?

    import time,subprocess,os,signal

    timeLeft = 5

    while timeLeft > 0:
       print('Time left is ' + str(timeLeft))
       time.sleep(1)
       timeLeft = timeLeft - 1
       pass

    proc = subprocess.Popen(['open','/Users/06 Green Day - Boulevard Of Broken Dreams.mp3'])

    time.sleep(2)

    os.kill(proc.pid, signal.SIGKILL)

我尝试过proc.terminate()但是徒劳无功。

2 个答案:

答案 0 :(得分:1)

sys.exit(0).

杀死它

答案 1 :(得分:0)

import time,subprocess,os,signal

proc = subprocess.Popen(["notepad.exe","data.out"])

timeLeft = 5

while timeLeft > 0:
   print('Time left is ' + str(timeLeft))
   time.sleep(1)
   timeLeft = timeLeft - 1
   pass

os.kill(proc.pid, signal.SIGTERM)

如果你重新排列这样的代码,它应该启动进程,倒计时timeleft然后终止进程。我确实必须使用SIGTERM