
php에서 pcntl_fork 함수를 사용할 때, 부모 프로세스의 pid 값이 항상 0으로 출력되는 이유는 다음과 같습니다.
- pcntl_fork 함수는 fork 함수를 호출하여 프로세스를 복사합니다.
- 프로세스를 복사하는 과정에서 부모 프로세스의 pid 값은 0으로 초기화됩니다.
- 부모 프로세스는 자식 프로세스의 pid 값을 반환받기 때문에, 부모 프로세스의 pid 값은 0이 아닌 자식 프로세스의 pid 값이 반환됩니다.
따라서, 부모 프로세스의 pid 값을 실제 pid 값으로 출력하고 싶다면, fork 함수를 호출한 후, 부모 프로세스와 자식 프로세스를 구분하는 조건문을 사용해야 합니다.
예를 들어, fork 함수를 호출한 후, 부모 프로세스는 자식 프로세스의 pid 값을 반환받기 때문에, 부모 프로세스의 pid 값은 0이 아닌 자식 프로세스의 pid 값이 반환됩니다. 따라서, 부모 프로세스의 pid 값을 실제 pid 값으로 출력하고 싶다면, fork 함수를 호출한 후, 부모 프로세스와 자식 프로세스를 구분하는 조건문을 사용해야 합니다.
예제 코드는 다음과 같습니다.
#hostingforum.kr
php
$pid = pcntl_fork();
if ($pid == -1) {
die("could not fork");
} elseif ($pid) {
// 부모 프로세스
echo "부모 프로세스 pid : $pidn";
} else {
// 자식 프로세스
echo "자식 프로세스 pid : " . posix_getpid() . "n";
}
위 코드에서, 부모 프로세스의 pid 값을 실제 pid 값으로 출력하기 위해, posix_getpid() 함수를 사용하여 현재 프로세스의 pid 값을 반환받습니다.
2025-08-11 19:54