我想在设备上开始测试运行,然后在测试运行时启动另一个使用ffmpeg捕获DUT输出的作业。近似代码:
filename = "{0}_{1}_{2}.mp4".format(dut[BUILD],dut[BOARD],
variation)
test_args = ["command","arg1","arg2"]
rec_args = ["ffmpeg","-f".....]
test_job = subprocess.Popen(test_args)
rec_job = subprocess.Popen(rec_args)
rec_job.wait()
test_job.wait()
当我运行此程序时,程序会运行一段时间,然后突然退出:
[1]+ Stopped python my_script.py
子进程仍在运行,但显然在后台。 “ ps”将显示以下内容:
PID TTY TIME CMD
100749 pts/0 00:00:01 bash
209084 pts/0 00:00:00 python
209085 pts/0 00:00:15 ffmpeg
209136 pts/0 00:00:00 test_that
209380 pts/0 00:00:00 python2.7
209416 pts/0 00:00:02 python2.7
209545 pts/0 00:00:00 ps
如果我随后使用“ fg”,则控件会跳回到脚本所在的位置。问题是我无法让控件跳出这样的脚本。有人知道会发生什么吗?到目前为止,我最强烈的怀疑是测试程序的输出过于闲谈(〜135KB),并且与Popen的输出流系统混为一谈-但将stdout更改为os.devnull也无济于事。而且我没有办法通过其args将该程序静音。另一个值得注意的事情是,测试程序将chroot作为其功能的一部分进行切换,这可能相关吗?