我有一个程序通过system()
执行各种shell命令,偶尔会打印到cout
。我想将来自system()
调用的所有输出重定向到日志文件,这样它们就不会使正常输出混乱。我是否可以在不必将> log
附加到我的所有系统命令的情况下执行此操作?
答案 0 :(得分:4)
看起来您可以使用popen
答案 1 :(得分:2)
关闭stdio文件描述符(0,1和2)并在你喜欢的任何输出设备上重新打开它们。
答案 2 :(得分:2)
使用system
只是一个坏主意,期间。如果您使用fork
和execve
或posix_spawn
,则可以轻松进行必要的重定向,并避免来自shell引用问题的各种漏洞。
答案 3 :(得分:0)
如果您可以使用包装进程调用的库。从posix编码很难。我使用boost.process,它运行正常。你可以简单地告诉lib你想如何重定向输出......
MY2C