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