2012-04-18 137 views
0

我正在一個相當簡單的應用程序在C中。最終目標是管輸出從一個進程到輸入另一個* nix環境(是的,我知道pipe()命令和dup/dup2,但我試圖找到使用這些命令)。我想知道是否有任何方式連接流而不是使用文件描述符(系統不能保證符合POSIX)。使用流管道輸入/輸出之間* nix進程

所以基本上我想要做這樣的事情(僞代碼)

pid = fork() 

if pid == 0 
    // assign this process's stdin to the parents stdout. 
    stdin = parent.stdout; 
    exec() // launch new process that receives the parents stdout as stdin 
    // child stuff.... 
else 
    // parent stuff.... 

我知道,它可能不會是那麼簡單,只是在做一個分配如上,但有什麼辦法這樣做只使用流?我試圖環顧四周,但找不到任何東西..

謝謝!

+0

您將無法避免使用管道將一個進程的標準輸出連接到另一個進程的標準輸入(除非您將Unix域套接字視爲替代方法)。 – 2012-04-18 00:43:34

+0

好織補。好吧,我希望我可以懶惰。謝謝! – Neil 2012-04-18 00:46:34

+0

出於興趣,pipe()或dup/2出了什麼問題? – 2012-04-18 00:49:13

回答

0

對不起,如果我在這裏忽略了這一點,但* nix的整個哲學是一個程序,一份工作。如果你需要一個程序將程序的內容轉儲到屏幕上,那麼你有cat命令。如果文件太大並且需要分頁符,請將cat的輸出傳遞給更多命令:

cat myfile.txt |更

如果需要管雙端應用程序之間,那麼你註定要使用命令行可以這樣做:

myprog1 | myprog2

很明顯,這是哲學方法,所以如果這樣做沒有幫助,那麼你能澄清一下你正在努力修煉什麼,以及你爲什麼要嘗試去做?

+0

對不起Russ。我正在設計一個輕量級終端。它的一項工作是運行其他工作;) – Neil 2012-04-18 00:46:08

+0

啊哈,是的,這將解釋它:) – 2012-04-18 00:47:22