我正在尝试运行以下代码,但它不起作用。我只想在程序的输入名称完成时执行程序。我不知道问题究竟在哪里,请注意代码似乎没问题。也许还有其他重要的事情,我没有注意到......
setbuf(stdout, NULL);
char input[255];
char path[255];
int status;
char *args[2] = {"ls", NULL};
while(strcmp(input, "end") != 0 ){
printf("Waiting for input:\n");
scanf("%s",input);
strcpy(path, "./");
strcat(path, input);
if(strcmp(input, "end") != 0){
printf("execute %s\n", path);
int ret = execv(path, args);
if(ret == -1){
perror("execve error");
}
}
else{
printf("Programm-Ends\n");
}
};
return 0;
答案 0 :(得分:0)
args
的第一个元素应该是正在运行的程序的名称。所以说:
args[0] = path;
在致电execv()
之前。