2014-01-06 24 views
1

在我的應用程序在C++中,我打電話給一些其他第三方API生成控制檯輸出/錯誤消息。我想將所有這些消息重定向到我的應用程序中的日誌,以便用戶的屏幕只顯示我的應用程序的消息,並且沒有充滿來自第三方模塊的無關消息。 有沒有辦法做到這一點。我不知道,但第三方的API是使用C/C + _庫將控制檯輸出/第三方模塊的錯誤重定向到日誌文件

感謝 魯奇

+0

你在一個特定的平臺上?讓用戶從重定向輸出的小包裝腳本啓動應用程序是否可以接受? ('#!/ bin/bash \ n ./myProg 2> logfile')。 – BoBTFish

+0

沒有用戶不應該看到他可用的界面有任何改變。它應該是我的應用程序代碼中的無聲更改。我正在研究Linux。另外,他應該只能在控制檯上看到我的應用程序中的所有消息 – Ruchi

+1

您能告訴我們代碼在控制檯上寫錯誤的位置嗎? –

回答

0

如果你自己不使用標準輸出的文件描述符,你可以這樣做:

int newout = dup(1); 
    int log = open("./my.log", O_RDWR|O_CREAT, 777); 
    dup2 (log, 1); 

現在標準輸出(描述符1)進入「./my.log」,新的文件描述符轉到過去的標準輸出。

如果您使用Unix低級IO(例如write(2)),則可以直接使用newout。如果你使用C stdio,那麼fdopen(3)吧。如果你更喜歡C++流,看看at this question and its answers

相關問題