我目前正在尝试在 C 中运行一个 fork 函数,在代码的子部分中,我正在尝试使用 exacvp 执行命令,但在执行之前我正在尝试一个永远不会执行的 printf 函数。我在调试中运行了它,我注意到 pid 从未分配为 0。我确实在一个单独的项目中尝试了一个简单的 fork 示例,它运行顺利。有谁知道为什么子部分永远不会执行?
int startProcesses(int background) {
int i = 0;
while(*(lineArray+i) != NULL) {
int pid;
int status;
char *processName;
pid = fork();
if (pid == 0) {
printf("I am child");
// Child Process
processName = strtok(lineArray[i], " ");
execvp(processName, lineArray[i]);
i++;
continue;
} else if (!background) {
// Parent Process
waitpid(pid, &status, 0);
i++;
if(WEXITSTATUS(status)) {
printf(CANNOT_RUN_ERROR);
return 1;
}
} else {
i++;
continue;
}
}
return 0;
}