[问题] fork 透过pipe 做write/read

楼主: yshihyu (yshihyu)   2015-10-19 16:27:20
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正常
, 请问这是什么原因?
谢谢
作者: leolarrel (真.粽子无双)   2015-10-19 17:02:00
fread/fwrite 背后会有buffer机制/纪录seek位置,所以他不等于linux 的read/write
作者: gigigigi (gigigigi)   2015-10-19 17:21:00
所以一定要用 read /write 吗?好奇我也想知道这跟使用 fork ,pipe 才必须用 readwrite,而不能用标准函数库吗?
作者: yvb   2015-10-19 19:05:00
程式 108列 len = read(... 而 115列知道用 write(... len);结果 70列 n=fread(... 而 78列却用 write(... strlen(... ?
楼主: yshihyu (yshihyu)   2015-10-19 22:55:00
yvb 感谢...XD

Links booklink

Contact Us: admin [ a t ] ucptt.com