如何重定向stderr并使用popen()在后台运行?

时间:2018-04-20 07:32:59

标签: c++ linux debian popen

我可以做其中一个但不能两个都做。如果我使用&符号使它在后台运行,那么它按预期工作:

popen( "gzip -dc diskImageFile.gz | dd bs=32000000 of=/dev/sd%c status=progress &" );

如果我将它设置为将stderr重定向到stdout,那么它会按预期工作:

popen( "gzip -dc diskImageFile.gz | dd bs=32000000 of=/dev/sda status=progress 2>&1" );

但如果我尝试两者兼有,那么它就不再在后台运行了。如何同时执行stderr的重定向并在后台运行?

popen( "gzip -dc diskImageFile.gz | dd bs=32000000 of=/dev/sda status=progress 2>&1 &" );

我在Raspberry Pi(Debian)上这样做

1 个答案:

答案 0 :(得分:2)

popen启动另一个独立于调用进程运行的进程。没有必要让&符号在后台运行它已经存在了。