2016-11-06 74 views
0

如何在c代码中访问管道参数?bash + c管道参数

test.c的

int main(int argc, char *argv[]) { 
    int i = 0; 
    for (i = 0; i < argc; i++) { 
     printf("argv[%d] = %s\n", i, argv[i]); 
    } 
} 

击:

cat file.txt | ./test 

它打印只是第一个参数argv[0] = ./test。如何访问c代码中的file.txt内容(作为参数)?

+1

尝试使用'xargs',执行'man xargs'。 –

+0

谢谢,但接下来会有太多的参数。 – dontHaveName

回答

0

使用管道,您的程序将在标准输入中获取file.txt的内容。所以,从stdin读。例如,您可以使用fgets()逐行读取:

#include <stdio.h> 

int main(int argc, char *argv[]) { 
    int i = 0; 

    char line[1024]; 
    while(fgets(line, sizeof line, stdin)) { 
    printf("%s", line); 
    } 
}