gpt4 book ai didi

c - 在 c 中使用 fork 和 execvp 导致错误

转载 作者:太空宇宙 更新时间:2023-11-04 01:30:35 25 4
gpt4 key购买 nike

我正在尝试使用 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;
}

最佳答案

execvexecvp 函数提供指向空终止字符串<的指针数组/b> 表示新程序可用的参数列表。

第一个参数应该指向与正在执行的文件关联的文件名。

指针数组必须NULL指针结束。在 argv* 的末尾附加一个 0NULL

关于c - 在 c 中使用 fork 和 execvp 导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23249620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com