1

我正在尝试制作一个简单的程序,该程序将启动一个子进程,该子进程将字符串写入管道,而父进程计数,直到它从管道中获取字符串。然而,我的问题是,当程序运行时,它要么不计数,要么不会停止计数。我想知道如何检查子进程是否仍在运行,并且取决于计数循环的中断。

import os, time

pipein, pipeout = os.pipe()

def child(input, pipeout):  
    time.sleep(2)
    msg = ('child got this %s' % input).encode()
    os.write(pipeout, msg)

input = input()

pid = os.fork() 
if pid: 
    i = 0
    while True:
        print(i)
        time.sleep(1)
        i += 1
        try:
            os.kill(pid, 0)
        except OSError:
            break
    line = os.read(pipein, 32)
    print(line)
else:
    child(input, pipeout)
4

1 回答 1

1

您应该使用该subprocess模块,然后您可以调用poll()

使用 popen.poll()

在这里解释

if Popen.poll() is not None:
    //child process has terminated

[编辑]:

“控制输入和输出流以及检索返回码的唯一方法是使用 subprocess 模块;这些仅在 Unix 上可用。”

资源

于 2013-06-27T22:11:51.940 回答