一直以来,我以为命令行参数以空格为分隔。
比如mycommand 123 234 456 789。
命令行参数是5个,其中第一个参数是mycommand,即命令本身,后面发现不是这样。
123 234 456 789这4个合在一起可能是一个参数,主要看调用方怎么写。
首先准备一个程序argtest,用于打印命令行参数
#include <stdio.h>
int main(int argc, char **argv)
{
int i = 0;
for(; i < argc; i++)
{
printf("i = %d, arg is %s\n", i, argv[i]);
}
return 0;
}
然后写一个程序exectest,调用argtest,如下所示:
#include <stdio.h>
#include <unistd.h>
int main()
{
char *myargv[6];
myargv[0] = "/root/tusong/argtest/argtest";
myargv[1] = "hello";
myargv[2] = "cmd1 cmd2 cmd3";
myargv[3] = NULL;
execvp (myargv[0], myargv);
return 0;
}
启动exectest,执行结果如下: