linux 进程通信 pipe
生活随笔
收集整理的這篇文章主要介紹了
linux 进程通信 pipe
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
管道函數
man pipe
父子進程實現pipe通信,實現ps aux | grep bash 功能
經常出現的問題:
父進程認為寫端存在,就有可能還有人發送數據,繼續等待
所以盡量保持管道數據的流向保持一致,所以先在子進程關閉讀端,
父進程關閉寫端,這樣管道流向就是 子進程寫,父進程讀。
讀管道
a.寫端全部關閉, -- read讀到0,相當于讀到文件末尾b.寫端沒有全部關閉b1.有數據 -- read讀到數據b2.沒有數據 -- read阻塞 (fcntl函數可以更改為非阻塞)寫管道
a. 讀端全部關閉, 產生一個信號,SIGPIPE(kill - 13),程序異常終止b. 讀端沒有全部關閉b1. 管道已滿 --write阻塞b2. 管道未滿 --write正常寫入,通過ulimit -a
只能單向通信, 雙向通信需要建立兩個管道
只有血緣關系的進程才能通信
總結
以上是生活随笔為你收集整理的linux 进程通信 pipe的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在js高级程序设计书上,控制台上出现Un
- 下一篇: Linux 进程通信之FIFO