【发布时间】:2014-04-23 16:00:07
【问题描述】:
我正在尝试使用 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;
}
【问题讨论】:
-
也许可以试试
char **argv = {"ls", "/home/school/", (void*)0};? -
(void*)0 需要用引号引起来吗?我在使用 (void*)0 时收到警告
-
OT:您应该在错误
cases 中添加break语句 -
@user1768079
(char *)0是正确的。