驗證管道只能用於有親緣關係的程序通訊

2021-07-30 07:56:55 字數 820 閱讀 5604

都說管道只能用於具有親緣關係的程序之間的通訊,這裡的親緣關係指的是什麼呢?書上是這麼說的:有親緣關係意味著所論及的程序具有某個共同的祖先(我覺得這種說法並不是很可靠,因為所有的程序的祖先程序都是init程序)。我個人是這麼理解的,這些親緣關係的程序是乙個程序經過一次或者多次fork出來的程序,管道就是用於這種具有親緣關係的程序之間的通訊。後來查閱了一些網上資料,是這麼說的,實踐證明,程序的親緣關係開始於乙個登入shell以及由該shell派生出來的所有程序。為了驗證這一點,我們來看乙個測試例子:);

;);(pid =

= 0){)

;(pid =

= 0)

{(read(fd[0]

,&ch, 1)

!= 1)

{"child read error!\n");

else

{"child\'s child read is:%c\n"

, ch)

;else

if(pid > 0){)

;,"f", 1)

;else

{"fork error");

執行結果:

/summer/pipe]38$ .

/a.out

:f/summer/pipe]39$

程式說明:在父程序當中建立乙個程序,然後父程序往管道當中寫入乙個字元,而子程序繼續呼叫fork建立乙個程序,在子程序的子程序當中從管道當中讀取這個字元並顯示。由此我們可以得出這樣的結論:父程序可以與子程序的子程序進行通訊。我想書上所說的管道只能用於具有親緣關係的程序之間的通訊就是說的這一點吧。

0

給主人留下些什麼吧!~~

this只能用於非靜態成員函式內部 this小題

下列關於this指標的敘述中,正確的是 d a this指標是乙個隱含指標,它隱含於類的成員函式中 b 只有在使用this時,系統才會將物件的位址賦值給this c 類的友元函式也有this指標 d this指標表示了成員函式當前操作的資料所屬的物件 解析 this指標是成員函式所屬物件的指標,它指...

await運算子只能用於非同步方法中,為什麼?

在我們日常用async await程式設計的時候,會遇到這個錯誤,await運算子只能用於非同步方法中 就不明白原因,既然我已經使用await,已經等待任務完成,已經是同步了,為什麼await還只能用在非同步方法中。最近正好看到一篇文章談到async await用法,就想到了這個問題,搜沒有搜到。重...

有一種情感只能用心去儲藏

人活這一輩子,總會碰到幾個特別的人,這類人可能只是你純粹的精神寄託,但他不能被單純的劃歸為朋友,因為他對你傾注的關愛超出了一般朋友的界限和理念,可你和他又不曾有過將之昇華為愛人的那種具體行為,你們之間或者常常淡如水 所以,這一類人,應該是介於情人與朋友之間的。那,你和他之間的那種情感,那種超乎於尋常...