作者LPH66 (ha(ruhi|yate)ism)
看板Programming
标题Re: [问题] 如何强迫 printf 写回资料
时间Fri Mar 2 13:06:51 2007
※ 引述《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
1F:→ somi:run a strace to find out the problem? 132.239.55.5 03/02 14:55