作者yshihyu (yshihyu)
看板LinuxDev
標題[問題] fork 透過pipe 做write/read
時間Mon Oct 19 16:27:20 2015
https://gist.github.com/anonymous/203fa95d5bb48bc7a1c5
fork 後由父行程跟子行程透過 pipe 拷貝檔案
父行程使用fread讀取檔案後透過 pipe write , 由子行程從pipe read 之後寫入檔案
可是最後檔案會出現奇怪亂碼 , 可是把父行程 fread 改成 read 就正常
用fread讀 跟用 read 有什麼差異嗎?
./test a.txt b.txt
b.txt 會友奇怪亂碼
#if 1 改成 0 跑 read 函數就b.txt正常
, 請問這是什麼原因?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.58.205
※ 文章網址: https://www.ptt.cc/bbs/LinuxDev/M.1445243245.A.EB3.html
→ leolarrel: fread/fwrite 背後會有buffer機制/紀錄seek位置,所以他 10/19 17:02
→ leolarrel: 不等於linux 的read/write 10/19 17:03
推 gigigigi: 所以一定要用 read /write 嗎? 10/19 17:21
→ gigigigi: 好奇我也想知道 10/19 17:21
推 gigigigi: 這跟使用 fork ,pipe 才必須用 read 10/19 17:33
→ gigigigi: write,而不能用標準函數庫嗎? 10/19 17:33
推 yvb: 程式 108列 len = read(... 而 115列知道用 write(... len); 10/19 19:05
→ yvb: 結果 70列 n=fread(... 而 78列卻用 write(... strlen(... ? 10/19 19:06
→ yshihyu: yvb 感謝...XD 10/19 22:55