2015-10-16 64 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

回答