【发布时间】:2018-05-15 00:37:28
【问题描述】:
我有以下代码:
int main(int argc, char *argv[])
{
int i, a=9;
int length = 0;
const char fail[20] = "Missing Arguments\n";
char s1[512] = "";
char s2[15] = "./calc_prizes";
for (i=1; i<argc; i++) {
length += sprintf(s1+length, " %s", argv[i]);
}
strcat(s2, s1);
while(++a < argc) {
if(fork() == 0) {
char* arg[] = {s2, s1, NULL}; //this is the part that's wrong
execvp(arg[0],arg);
exit(1);
}
else
wait(NULL);
}
return 0;
}
S2 存储程序的名称,s1 参数收集参数。用execvp的参数我似乎无法运行程序,我做错了什么?
【问题讨论】:
-
execvp(arg[0], arg + 1);应该可以解决问题。 -
你为什么要
strcat(s2, s1);?最好在问题中添加以下详细信息 - 1. 传递给该程序的命令行参数。 2.解释a=9.
标签: c parameters parameter-passing exec