import subprocesswhile True: proc = subprocess.Popen(["python3", "/home/pi/Documents/8-17/simplest.py"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) try: while True: if proc.poll() is not None: break # 读取子进程的输出 output = proc.stdout.readline().decode().strip() if output: print(output) error = proc.stderr.readline().decode().strip() if error: print(error) except KeyboardInterrupt: proc.terminate() break simplest 里面ffpeg推流打印信息没有在终端输出
时间: 2023-12-10 07:39:36 浏览: 156
这个问题可能是因为 `subprocess` 模块的缓冲机制导致的。可以尝试使用 `subprocess.PIPE` 的 `bufsize` 参数来控制缓冲区大小,或者使用 `subprocess.STDOUT` 将标准输出和标准错误输出合并,以便更好地捕捉子进程的输出信息。比如:
```python
import subprocess
while True:
proc = subprocess.Popen(["python3", "/home/pi/Documents/8-17/simplest.py"],
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
try:
while True:
if proc.poll() is not None:
break
# 读取子进程的输出
output = proc.stdout.readline().decode().strip()
if output:
print(output)
proc.wait()
except KeyboardInterrupt:
proc.terminate()
break
```
这里将标准错误输出合并到标准输出中,并使用 `proc.wait()` 等待子进程结束。另外,还可以使用 `universal_newlines=True` 参数将字节流转换为文本流,以便更方便地处理输出。
阅读全文