2

私は現在、コードの子セクションで、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;

}

4

1 に答える 1