subprocess.Popen()一直将我的脚本踢入后台模式

时间:2018-06-20 00:47:44

标签: python-2.7 subprocess

我想在设备上开始测试运行,然后在测试运行时启动另一个使用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作为其功能的一部分进行切换,这可能相关吗?

0 个答案:

没有答案