【发布时间】:2012-02-23 03:37:06
【问题描述】:
我有一个编译 test.cpp 的命令,应该将输出存储在输出文件中。这是我生成的 cmd 的示例:
g++ tmp/test.cpp -o tmp/test &> tmp/compile.out
当我使用 system() 时,它不起作用。即使它创建了输出文件,它仍然会将所有内容打印到主控制台窗口。当我在终端中执行它时,它工作得很好。
我也尝试过使用 popen() 和 fgets()(只是从 here 复制代码),但同样发生了。我可能可以只分叉我的进程并使用 freopen 或其他东西,但我有套接字和多个线程在后台运行。我猜它们也会被复制,这不好。
任何想法为什么它可能会失败?
【问题讨论】:
-
你在哪个平台上?根据我本地 Linux 安装上的
system手册页,它专门使用/bin/sh来执行字符串。 shell 之间的重定向语法不同,&>可能是 bash 扩展。/bin/sh是否是 bash 的符号链接可能取决于平台/发行版。 -
我使用的是 Ubuntu 11.10。