[英]Passing multiple arguments to C program
我寫了一個小的C程序,它使用3個整數作為參數。 如果我這樣運行: myapp 1 2 3
運行正常, argc
正確顯示4,但如果我這樣做: echo 1 2 3 | myapp
echo 1 2 3 | myapp
,argc僅顯示1。
C代碼的相關部分是:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char **argv)
{
printf("Entered: %i\n", argc);
if ( argc < 4)
{
printf("You must enter 3 integers as command line arguments!\n");
exit(1);
}
}
這有什么問題?
echo 1 2 3 | myapp
echo 1 2 3 | myapp
不帶任何參數調用myapp
。 值通過stdin
傳遞。
您可能要改用它(如果在Unix中使用bash):
myapp `echo 1 2 3`
或者,如果您在一個名為numbers.txt的文件中具有數字列表,則也可以執行以下操作:
myapp `cat numbers.txt`
管道將第一個進程的輸出傳遞到第二個進程的stdin
,這與命令行參數無關。 您需要的是xargs
,它使用第一個進程的輸出並將其用作命令行參數:
echo 1 2 3 | xargs myapp
echo 1 2 3 | myapp
echo 1 2 3 | myapp
將發送1 2 3到程序的標准輸入。 如果您的程序不讀取它,它將永遠不會看到這些數字。 您需要使用例如scanf才能正常工作。 請注意,您將必須自己解析字符串以計算以此方式傳遞的“參數”的數量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.