我正在尝试使用fork / execvp从我的C程序中执行另一个程序。它正在工作,但是在ls输出我的目录的内容之前我得到几百行:
ls: cannot access : No such file or directory
后面是目录中文件的正确列表。我要去execvp:
char **argv = {"ls", "/home/school/"};
char *command = "ls";
出于某种原因,当我使用路径" / home / school"它找不到目录。有谁知道为什么会发生这种情况以及为什么ls说它无法访问?
PID = fork();
i = 0;
if(i == numArgs) { doneFlag = 1; }
if (PID == 0){//child process
execvp(command, argv);//needs error checking
}
else if(PID > 0){
wait(PID, 0, 0);//wait for child process to finish execution
}
else if(PID == -1){
printf("ERROR:\n");
switch (errno){
case EAGAIN:
printf("Cannot fork process: System Process Limit Reached\n");
case ENOMEM:
printf("Cannot fork process: Out of memory\n");
}
return 1;
}
答案 0 :(得分:2)
char**
中传递的execvp()
参数必须由NULL
终止。
答案 1 :(得分:2)
execv 和 execvp 函数提供指向以null结尾的字符串<的指针数组/ b>表示新程序可用的参数列表。
第一个参数应指向与正在执行的文件关联的文件名。
指针数组必须由 NULL 指针终止。在0
末尾添加NULL
或argv*
。