我在C++中遇到execvp()
问题。这里是我的代码:如何使execvp()处理多个参数?
char * argv[]={};
command_counter = 0;
char line[255];
fgets(line,255,stdin);
argv[0] = strtok(line, TOKEN);//seperate the command with TOKEN
while (arg = strtok(NULL, TOKEN)) {
++command_counter;
cout << command_counter << endl;
argv[command_counter] = arg;
cout << argv[command_counter] << endl;
}
argv[++command_counter] = (char *) NULL;
execvp(argv[0],argv);
但问题是,当我使用execvp()
这样的多个参数不工作。
与ls -a -l
一样,它仅作为结果执行ls -a
。
这个程序有什么问题?
有了你们的问题,通过改变的char * argv的声明解决的问题[128]
废话 - 'execvp() '处理非常大量的参数没有问题。你用'execvp()'的方式遇到了问题。你可以通过将你的问题描述为“如何正确使用'execvp()',因为这不起作用”而不是''execvp()'不起作用“来帮助你。我已经或多或少的在这个问题上为你解决了这个问题的措辞,但是这次你会发现你错误的频率比系统更高。 –
'char * argv [] = {};'你认为这会做什么? – Gopi
因为你的行长度为255个字符,所以不能超过128个参数,所以你应该写:'char * argv [128];'。 –