我在Python中启动=Hyperlink("http://my.jira.com/" & B1,B1)
并尝试读取每行输出。不幸的是,如果我的流程仍然存在,我无法找到一种好的测试方法。标准方法似乎是检查subprocess
,但似乎总是返回poll()
。这是我的代码。
None
我还尝试使用proc = Popen(sys.argv[1:], stdin=PIPE, stdout=PIPE, stderr=STDOUT)
while True:
process_line(proc.stdout.readline().decode('utf-8'))
if not proc.poll():
break
for line in proc.communicate()[0].splitlines():
process_line(line.decode('utf-8'))
,它适用于非衍生进程,但似乎Python会处理它启动的进程,因此os.kill(proc.pid, 0)
始终会返回。
我做错了什么?
答案 0 :(得分:2)
逐行处理子进程输出,试试这个:
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, bufsize=1)
while p.poll() is None:
line = p.stdout.readline()
...do something with the line here
注意我将缓冲区大小设置为1。
同样,不需要os.kill(proc.pid, 0)
。打电话吧
您生成的子流程上的.kill()
。您也可以调用.wait()
等待终止,而不是立即终止该进程。