2010-01-09 58 views
2

我寫了LC3彙編語言一個簡單的代碼編輯器,我碰到的一個小問題。在從日誌文件中讀取後,LC3彙編程序輸出有關組裝狀態的基本信息,這些信息是我試圖在程序中顯示的。如何重定向stdout和stderr並保存順序?

本來我試圖使用system()調用LC3彙編器和輸出和錯誤重定向到一個文件,就像這樣:

system("/pathto/lc3as 1> lc3.log 2>&1"); 

它輸出到文件,但不保留的順序彙編程序的輸出。

我想出了一個醜陋的解決辦法是保留了輸出的秩序,但涉及很多文件IO比我想,我不知道這是否會在任何情況下工作。在那個筆記上,我想知道是否有更好的解決方案將輸出路由到保存順序的程序。

+1

什麼操作系統?像POSIX一樣,Windows或..? – 2010-01-09 10:35:39

回答

1

一旦你重定向輸出,從輸出流切換到「刷新只有當緩衝區滿」模式「刷新每次寫入後」。您的stderr輸出現在將與stdout輸出完全不同步。你必須自己明確地撥打fflush()。也許你的CRT有改變模式的功能。

還要考慮解決這個。沒有人會將進度喋喋不休重定向到一個文件,只有stderr輸出很重要。

+0

嗯,是的,我想我可以離開它。不幸的是,「喋喋不休」的標準輸出還挺給出了關於又名通過什麼錯誤發生在錯誤的一些信息,但我想實際的錯誤可能就足夠了。 –

相關問題