私は現在、コードの子セクションで、exacvp を使用してコマンドを実行しようとしている C で fork 関数を実行しようとしていますが、実行前に決して実行されない 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;
}