2014-03-29 19 views
1

我有一個程序,我需要提供2個不同的流作爲輸入。作爲不同的文件描述符在c中的多個流

如果我只需要一個流作爲輸入,我可以使用標準輸入像這樣

./a.out <file1 
fgets(buf,1000,stdin) 

是否有可能像做

./a.out --file1 <(cat file1) --file2 <(cat file2) 
FILE *fp1 = fdopen(3,"r"); 
FILE *fp2 = fdopen(4,"r"); 
fgets(buf,1000,fp1); 
fgets(buf,1000,fp2); 

在那裏我假設流創建與'<(cat file1)'和'<(cat file2)'將有文件描述符編號3和4.

+0

您可以使用命名管道此。或臨時文件。 –

回答

4

如果您使用bash作爲您的shell,您可以執行f ollowing:

./a.out 3< file1 4< file2 
0

你可以像這樣運行程序:

./a.out file1 file2 

和使用這些文件在你的程序是這樣的:

int main(int argc, char *argv[]) { 

    FILE *fp1 = fopen(argv[1], "r"); 
    FILE *fp2 = fopen(argv[2], "r"); 

    fgets(buf1, length_of_buf1, fp1); 
    fgets(buf2, length_of_buf2, fp2);