2013-04-10 100 views
0

在我的C++應用程序中,我使用一些對第三方庫的調用來創建新的子進程。我將2 FILE**變量傳遞給它,並且它們被子進程的處理程序的指針stdoutstderr填充。但事實上,我不需要在單獨的線程中分別讀取它們,我只需要將它們合併到一個並從那裏讀取。我該怎麼做(Linux和Windows)?如何將多個文件描述符合併爲一個?

回答

0

文件描述符被系統鏈接到物理文件。將兩個文件描述符合併爲一個將導致只獲得一個文件。

如果您總是將這兩個文件描述符放在一起,那麼您可以簡單地創建一個只能在一個變量指針中處理兩個文件描述符的結構。

+0

當然我可以,但我想要的是讓他們合併。這將使我的生活更輕鬆,從單線程讀取這些文件。這樣的事情應該在shell中完成,比如當我們寫'command 2>&1'時,然後將兩個日誌合併到標準輸出中。所以我想知道那裏2&1是如何實現的。 – 2013-04-10 12:28:49

1

使用dup2manpage)。

#include <stdio.h> 
#include <unistd.h> 

dup2(fileno(stdout), fileno(stderr)); 
相關問題