我有一个潜在的无限python'while'循环,即使在主脚本/流程执行完成后我也想继续运行。此外,我希望以后能够在需要时从unix CLI中终止此循环(即kill -SIGTERM PID),因此也需要循环的pid。我怎么做到这一点?谢谢!
环:
args = 'ping -c 1 1.2.3.4'
while True:
time.sleep(60)
return_code = subprocess.Popen(args, shell=True, stdout=subprocess.PIPE)
if return_code == 0:
break
在python中,父进程在退出时会尝试终止所有守护进程子进程。但是,您可以使用os.fork()
创建一个全新的过程:
import os
pid = os.fork()
if pid:
#parent
print("Parent!")
else:
#child
print("Child!")
Popen
返回一个具有pid
的对象。根据doc
Popen.pid子进程的进程ID。
请注意,如果将shell参数设置为True,则这是生成的shell的进程ID。
你需要关闭qazxsw poi来获得进程的pid,否则它会给出shell的pid。
shell=True