【问题标题】:Can't redirect the output of system()无法重定向 system() 的输出
【发布时间】:2016-01-15 02:03:26
【问题描述】:

我正在终端中的 Linux 中运行一个可执行文件,如下所示:

./foo 1 2 3 >output.txt

结果不会输出到 output.txt,即使文件已创建,但执行 &>output.txt 却可以解决问题。所以我猜 ./foo 的响应被定义为 stderr??

但是继续前进.. 我的目标是在 C 中多次调用该 ./foo 程序,但是当我这样做时,我无法将输出保存到文件中:

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

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

知道我做错了什么吗?

【问题讨论】:

  • 您需要提供有关您正在使用的命令解释器或 shell 的信息 - system() 调用的工作方式因这些而异(这与 system() 被实现定义的效果一致)。但是,假设您使用的是 unix 系统,最好使用 fork()exec() 系列函数之一来执行您的程序。如果你这样做,重定向输出的方法是stackoverflow.com/questions/2605130/…
  • 模拟激光雷达相机的程序不是我做的。它返回如下内容:` LIDAR 最小值 = 0.000000 弧度,最大值 = 2 弧度`
  • 实际上,这无关紧要。 system() 通常会启动一个本地 shell,而后者又会执行您的程序。

标签: c


【解决方案1】:

这里的解决方案:How can we redirect a Java program console output to multiple files?

问题在于 Eclipse 控制台正在“窃取”输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-26
    • 2011-06-16
    • 2014-12-11
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多