作者gn00618777 (非常念旧)
看板C_and_CPP
标题[问题] 创建 fifo 来达成两个 process 沟通
时间Sat Aug 11 17:12:17 2018
想请教一下 linux 下的 mkfifo
以下为部分代码
write.c:
char w_buf[] = "hello123";
if(write(fd, w_buf, sizeof(w_buf)) == -1) {
printf("write error\n");
}
close(fd);
read.c:
while(1) {
if(read(fd, r_buf, 9) == -1) {
printf("no data");
}
printf("read1 string is %s\n", r_buf);
}
读和写都预设是阻塞的。
./read &
./write
read一直无穷回圈,已经从 fifo 把资料读走了,应该下一个 loop 会阻塞才对?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 219.68.215.61
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1533978741.A.2C4.html
※ 编辑: gn00618777 (219.68.215.61), 08/11/2018 17:29:12
1F:推 jaid: 因为另一端已经closed了 08/11 17:50
2F:→ gn00618777: 我把 write端的 close拿掉也是一样... 08/11 18:27
3F:→ gn00618777: 阿 您是说,write process 结束後自己close掉? 08/11 18:29
4F:→ gn00618777: 好像是这样..我卡一个 fgets 在 write就可以是预期的 08/11 18:33
5F:推 jaid: 对 process结束也会关掉fd 另一边就会失败 08/11 20:18