[問題] fork 透過pipe 做write/read

看板LinuxDev作者 (yshihyu)時間9年前 (2015/10/19 16:27), 編輯推噓3(306)
留言9則, 4人參與, 最新討論串1/1
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

10/19 17:02, , 1F
fread/fwrite 背後會有buffer機制/紀錄seek位置,所以他
10/19 17:02, 1F

10/19 17:03, , 2F
不等於linux 的read/write
10/19 17:03, 2F

10/19 17:21, , 3F
所以一定要用 read /write 嗎?
10/19 17:21, 3F

10/19 17:21, , 4F
好奇我也想知道
10/19 17:21, 4F

10/19 17:33, , 5F
這跟使用 fork ,pipe 才必須用 read
10/19 17:33, 5F

10/19 17:33, , 6F
write,而不能用標準函數庫嗎?
10/19 17:33, 6F

10/19 19:05, , 7F
程式 108列 len = read(... 而 115列知道用 write(... len);
10/19 19:05, 7F

10/19 19:06, , 8F
結果 70列 n=fread(... 而 78列卻用 write(... strlen(... ?
10/19 19:06, 8F

10/19 22:55, , 9F
yvb 感謝...XD
10/19 22:55, 9F
文章代碼(AID): #1M9Abjwp (LinuxDev)
文章代碼(AID): #1M9Abjwp (LinuxDev)