2017-12-27 176 views
1

首先,對不起,如果使用不好的英語。管道消費者/生產者:誰應該是消費者/生產者的父/子後叉

在我的筆記中,我寫過這個子進程通常是製作者,但我不明白爲什麼。 在fork()調用之後,消費者和生產者是誰? 問題是:如果子進程是生產者,他會在父進程完成之前完成,這意味着子進程成爲殭屍進程。

關於這個問題,我試圖瞭解小素描:
enter image description here

回答

0

沒關係。這兩者中的任何一個都可以是生產者或消費者,這取決於您想要解決的偏好或任務。

誰先結束通常是不相關的,因爲生產者和消費者都會在管道的另一端關閉時收到通知。

默認情況下,通知將通過信號SIGPIPE發送,從而終止您的過程。如果您選擇忽略SIGPIPE,則功能readwrite將以EPIPE失敗。

但它是父母將負責收穫。

您可以在man 7 pipe瞭解更多:https://linux.die.net/man/7/pipe