Я пытаюсь создать простую программу, которая запустит дочерний процесс, который записывает строку в канал, пока родительский процесс рассчитывает до тех пор, пока не получит строку из канала. Однако моя проблема заключается в том, что при запуске программы она не будет считаться или не будет считаться. Я хочу знать, как я могу проверить, работает ли дочерний процесс, и в зависимости от того, что происходит из цикла подсчета.Разрыв цикла при завершении дочернего процесса
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)
' poll' вернет None, если этот процесс не прекращается, и это состояние выхода, если он имеет. Проверка '<0' не имеет никакого смысла. – mata
Ну Я не использую подпроцесс, поэтому мне это не помогает – Sebastian
@mata код для завершенных процессов - это отрицательное число, вы можете проверить конкретный код, если хотите – Stephan