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