하위 프로세스에 어떤 코드가 복사됩니까?

하위 프로세스에 어떤 코드가 복사됩니까?

if 문에서 fork() 메서드를 호출하면 생성된 하위 프로세스가 else 문으로 들어가나요?

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>

int main(void){
    int c = rand() % 50;

    if( c == 0 ){
        int k = fork();
    }
    else{
        printf("ELSE");
    }

    return 0;
}

fork()가 실행된 후 하위 프로세스가 "ELSE" 메시지를 인쇄합니까?

답변1

아니요.

하위 프로세스는 코드에서 상위 프로세스와 정확히 동일한 위치에 있습니다 fork(). 상위 프로세스와 하위 프로세스의 상태 사이의 유일한 차이점은 fork()코드에 할당된 호출의 반환 값 입니다 k(이것은 하위 프로세스의 PID를 상위 프로세스에 저장하는 반면 하위 프로세스에서는 0이 됩니다). ). 이런 일이 발생 하면 부모나 자녀 모두 진술서에 fork()도달하지 않습니다 .printf()

일반적인 접근 방식 fork()

pid_t pid;

pid = fork()

if (pid == 0) {
    /* child process code */
    /* including exit()   */
} else {
    /* parent process code           */
    /* including waitpid() or wait() */
}

관련 정보