![하위 프로세스에 어떤 코드가 복사됩니까?](https://linux55.com/image/128895/%ED%95%98%EC%9C%84%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%97%90%20%EC%96%B4%EB%96%A4%20%EC%BD%94%EB%93%9C%EA%B0%80%20%EB%B3%B5%EC%82%AC%EB%90%A9%EB%8B%88%EA%B9%8C%3F.png)
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() */
}