创建python循环作为“分离”子进程

问题描述 投票:0回答:2

我有一个潜在的无限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 infinite-loop
2个回答
0
投票

在python中,父进程在退出时会尝试终止所有守护进程子进程。但是,您可以使用os.fork()创建一个全新的过程:

import os

pid = os.fork()
if pid:
   #parent
   print("Parent!")
else:
   #child
   print("Child!")

0
投票

Popen返回一个具有pid的对象。根据doc

Popen.pid子进程的进程ID。

请注意,如果将shell参数设置为True,则这是生成的shell的进程ID。

你需要关闭qazxsw poi来获得进程的pid,否则它会给出shell的pid。

shell=True
© www.soinside.com 2019 - 2024. All rights reserved.