2017-09-24 34 views
-2

我正在運行X數量的進程,我可以遍歷,以便運行有master和slave的程序'採取主人的命令,並返回一個字符串。運行多個分叉的進程並不斷讀取他們的標準輸出,同時打印到他們的標準

我在C寫作。我想知道如何能夠設置管道和分叉進程之間的標準進出讀取。我目前能夠讓他們一次只工作一個,直到被殺,但我想簡單地閱讀一行,然後轉到下一個過程。任何幫助?

+0

閱讀本書中解釋如何使用poll()系統調用的章節。 –

回答

0

通常,這種編程的通用策略是設置一個事件循環。 您可以設置管道並將它們連接到程序的stdin和stdout。 您不指定您正在使用的語言。 在C中,您將創建兩個管道,一個用於讀取,另一個用於寫入。 然後你會分叉。在fork之後,在子節點中,關閉stdin和stdout,然後使用dup2系統調用將管道filedescriptors的一端複製到子節點。

在父級中,您將每個進程連接到一個事件循環,它可以讓您知道何時您的某個FD準備好讀取或寫入。

查看這些class notes討論使用管道和dup2。

這裏的介紹libevent,公共事件的一個循環爲C.

爲你做同樣的事情其他語言。例如,對於Python,請查看asyncio對子進程的支持。

+0

對不起,有C作爲我的語言,但尼爾在那裏編輯我的標籤。感謝您的幫助,但我會研究事件循環:) – lighthou

相關問題