2015-10-16 65 views
0

我运行在Linux中的可执行文件在终端像这样的输出:不能重定向系统()

./foo 1 2 3 >output.txt

结果没有输出到OUTPUT.TXT,即使该文件被创建,但做&>output.txt而不是诀窍。所以我猜测./foo的响应被定义为stderr?

但在继续讨论..我的目标是要调用C多次内./foo程序,但我不管理,以获得输出到文件时,我这样做:

status=system("./foo 1 2 3 &>output.txt")

输出只出现在Eclipse控制台中,但该文件确实已创建,但仍为空。 (我也试过>只)

任何想法我做错了什么?

+2

您需要提供有关正在使用的命令解释器或shell的信息 - system()调用的工作方式因工作方式而异(这符合正在实现的system()的效果) 。然而,假设你使用的是unix系统,你最好使用'fork()'和'exec()'函数系列之一来执行你的程序。如果你这样做,一个重定向输出的方法是在http://stackoverflow.com/questions/2605130/redirecting-exec-output-to-a-buffer-or-file – Peter

+0

这是一个程序没有做我模仿一个LIDAR相机。它返回如下形式: 'LIDAR 最小值= 0.000000弧度,最大值= 2弧度' –

+0

这实际上是无关紧要的。 'system()'通常启动一个本地shell,然后执行你的程序。 – Peter

回答