Re: [問題] 如何強迫 printf 寫回資料
※ 引述《N2I (NII)》之銘言:
: 一個簡單的測試程式,我將 stdout 轉向到檔案 log,程式執行後,會停在
: loop 裡,按下 ctrl+z 或 ctrl+c 強迫程式結束。
: 檢查 log 檔, ls 的結果都正確寫入,可是字串HELLO卻沒有正確寫入,我已經呼叫
: fsync() 強迫將 buffer 資料寫回了,為甚麼還是沒有?
: 是不是有甚麼地方我沒有注意到呢,謝謝囉
一個很奇怪的猜測:
雖然你底層已經把標準輸出轉走了
但表層上 stdout這個FILE *變數指向的結構裡記載的底層編號沒有改
而printf是寫進stdout這變數裡指定的地方
因此HELLO字串是寫到這已經不在的編號裡去了
而system會去找底層到底標準輸出現在在哪裡 把東西灌過去
我目前只想到freopen一解
(即開檔時改用freopen("log","w",stdout);來開)
這樣library會把stdout指向的結構更新 printf應該就能正常動作了
--
[LPH] Oops, your OOP's a problem? 說:
你現在還是看不到狗?
************* 說:
看得到 只是 他們不會跑 就一直呆呆在那邊 一直在起點
[LPH] Oops, your OOP's a problem? 說:
你要按"ㄅㄧㄤˋ"它們才會跑啊@@"
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 192.192.197.115
→
03/02 14:55, , 1F
03/02 14:55, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
Programming 近期熱門文章
PTT數位生活區 即時熱門文章