多个流作为c中的不同文件描述符

时间:2014-03-29 17:02:08

标签: c file-descriptor

我有一个程序,我需要提供2个不同的流作为输入。

如果我只需要一个流作为输入,我可以像这样使用stdin

./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);

我假设我使用'&lt;(cat file1)'和'&lt;(cat file2)'创建的流将具有文件描述符编号3和4。

2 个答案:

答案 0 :(得分:4)

如果您使用bash作为shell,则可以执行以下操作:

./a.out 3< file1 4< file2

答案 1 :(得分: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);