#include <stdio.h>
#include <unistd.h>
int main()
{
(fork() && fork()) || (fork() && fork());
printf("Hi...\n");
return 0;
}
답변1
자식은 fork
값을 반환 0
하고 부모는 0이 아닌 값을 반환한다는 것을 알고 있습니다. 꽤 복잡해지지만 프로세스가 어떻게 분기되는지에 대한 트리를 스케치할 수 있습니다.
or
첫 번째 인수가 true
이면 결과가 이미 로 알려져 있으므로 두 번째 인수의 계산을 건너뜁니다 true
. and
첫 번째 인수가 이면 두 번째 인수를 건너뜁니다. false
이 경우 결과는 이미 로 알려져 있기 때문입니다 false
. 각 fork
호출에는 호출 결과가 서로 다른 두 개의 프로세스 인스턴스가 있습니다. 따라서 일부 하위 프로세스에서는 일부 포크가 호출되지만 다른 프로세스에서는 호출되지 않습니다.
스케치(노란색은 분기된 선이 완료되고 실행이 다음 선으로 진행됨을 의미합니다).