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

看板C_and_CPP作者 (非常念舊)時間5年前 (2018/08/11 17:12), 5年前編輯推噓2(203)
留言5則, 2人參與, 5年前最新討論串1/1
想請教一下 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://www.ptt.cc/bbs/C_and_CPP/M.1533978741.A.2C4.html ※ 編輯: gn00618777 (219.68.215.61), 08/11/2018 17:29:12

08/11 17:50, 5年前 , 1F
因為另一端已經closed了
08/11 17:50, 1F

08/11 18:27, 5年前 , 2F
我把 write端的 close拿掉也是一樣...
08/11 18:27, 2F

08/11 18:29, 5年前 , 3F
阿 您是說,write process 結束後自己close掉?
08/11 18:29, 3F

08/11 18:33, 5年前 , 4F
好像是這樣..我卡一個 fgets 在 write就可以是預期的
08/11 18:33, 4F

08/11 20:18, 5年前 , 5F
對 process結束也會關掉fd 另一邊就會失敗
08/11 20:18, 5F
文章代碼(AID): #1RRgXrB4 (C_and_CPP)