[問題] 創建 fifo 來達成兩個 process 溝通

作者: gn00618777 (非常念舊)   2018-08-11 17:12:17
想請教一下 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 會阻塞才對?
作者: jaid (jaid)   2018-08-11 17:50:00
因為另一端已經closed了
作者: gn00618777 (非常念舊)   2018-08-11 18:27:00
我把 write端的 close拿掉也是一樣...阿 您是說,write process 結束後自己close掉?好像是這樣..我卡一個 fgets 在 write就可以是預期的
作者: jaid (jaid)   2018-08-11 20:18:00
對 process結束也會關掉fd 另一邊就會失敗

Links booklink

Contact Us: admin [ a t ] ucptt.com