作者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://webptt.com/cn.aspx?n=bbs/LinuxDev/M.1445243245.A.EB3.html
1F:→ leolarrel: fread/fwrite 背後会有buffer机制/纪录seek位置,所以他 10/19 17:02
2F:→ leolarrel: 不等於linux 的read/write 10/19 17:03
3F:推 gigigigi: 所以一定要用 read /write 吗? 10/19 17:21
4F:→ gigigigi: 好奇我也想知道 10/19 17:21
5F:推 gigigigi: 这跟使用 fork ,pipe 才必须用 read 10/19 17:33
6F:→ gigigigi: write,而不能用标准函数库吗? 10/19 17:33
7F:推 yvb: 程式 108列 len = read(... 而 115列知道用 write(... len); 10/19 19:05
8F:→ yvb: 结果 70列 n=fread(... 而 78列却用 write(... strlen(... ? 10/19 19:06
9F:→ yshihyu: yvb 感谢...XD 10/19 22:55