我有一個簡單的程序(使用線程),稱爲./mpace
,它在線程函數中使用printf()
。當我從終端運行它,輸出被打印的,因爲它應該,但是當I型:未能將linux程序的輸出存儲到文件
**./mpace > text**
創建的文件是空的。 有趣的是,昨天它完美運作。我鍵入:
echo "test" > text
檢查是否存在此功能的嚴重問題,但它的工作。 那麼,什麼可能是我的程序意外地開始無法寫入文件的原因?
請注意我不想使用fprintf()
從我的代碼,因爲時間消耗是必不可少的。
非常感謝,通過使用fflush(stdout)簡單地解決了該問題。我想在一個新行打印將沖洗通道,但作爲paxdiablo在註釋說明這裏不是:
Why does printf not flush after the call unless a newline is in the format string?
你是正確的,應該提供儘可能多的,因爲他可以信息,但我認爲爲單個printf()共享100行代碼會讓你閱讀起來更困難。我看到這是一個糟糕的決定,因爲沒有使用fflush,並且程序被一個信號終止的事實既導致了問題,也應該被公開。
共享代碼的相關部分將允許其他人回答您... – eyalm