Я хочу, чтобы Python убил этот процесс, если выходные данные дочернего процесса соответствуют критериям
Например, это бесконечный цикл while_file.py
, он печатает от 0 до 999 и выглядит так, что ответа нет.
i = 0
while 1:
if i < 1000:
print i
i += 1
Я хочу проверить, равен ли вывод дочернего процесса 999, а затем уничтожить его.
import os
import signal
import subprocess
def run_cmd(cmd):
pro = subprocess.Popen(cmd, stdout=subprocess.PIPE,
shell=True, preexec_fn=os.setsid)
while True:
r = pro.stdout.read()
print r
if r == 999:
os.killpg(os.getpgid(pro.pid), signal.SIGTERM)
if __name__=='__main__':
print run_cmd('python while_file.py')
Но, похоже, нет ответа ... почему? Это заблокировано?