我有一个程序,我需要提供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。
答案 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);