Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在OS X中使用Python在一段时间间隔后终止子进程_Python_Macos_Subprocess - Fatal编程技术网

在OS X中使用Python在一段时间间隔后终止子进程

在OS X中使用Python在一段时间间隔后终止子进程,python,macos,subprocess,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(timeL

我编写了一个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(),但没有成功

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

sys.exit(0)杀死它。

首先,当我尝试打开mp3文件时,它不起作用。默认情况下,iTunes应用程序打开了mp3文件,但没有终止,mp3继续播放。第二,我试图发出一个警报,该警报在给定时间后开始,在固定时间后结束,因此启动子进程的位置不会改变。@Prashant然后手动选择要打开的文件,就像在我的示例中,选择一个正确关闭的程序。它对我不起作用。外部应用程序继续运行。