2016-11-06 42 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); 
    } 
}