我可以全局重定向system()调用的输出吗?

时间:2011-01-26 17:37:55

标签: c++ c unix redirect system

我有一个程序通过system()执行各种shell命令,偶尔会打印到cout。我想将来自system()调用的所有输出重定向到日志文件,这样它们就不会使正常输出混乱。我是否可以在不必将> log附加到我的所有系统命令的情况下执行此操作?

4 个答案:

答案 0 :(得分:4)

看起来您可以使用popen

答案 1 :(得分:2)

关闭stdio文件描述符(0,1和2)并在你喜欢的任何输出设备上重新打开它们。

答案 2 :(得分:2)

使用system只是一个坏主意,期间。如果您使用forkexecveposix_spawn,则可以轻松进行必要的重定向,并避免来自shell引用问题的各种漏洞。

答案 3 :(得分:0)

如果您可以使用包装进程调用的库。从posix编码很难。我使用boost.process,它运行正常。你可以简单地告诉lib你想如何重定向输出......

MY2C