我正在尝试使用 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;
}
最佳答案
execv 和 execvp 函数提供指向空终止字符串<的指针数组/b> 表示新程序可用的参数列表。
第一个参数应该指向与正在执行的文件关联的文件名。
指针数组必须以NULL指针结束。在 argv*
的末尾附加一个 0
或 NULL
。
关于c - 在 c 中使用 fork 和 execvp 导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23249620/