라이브러리
[PHP] pcntl_wait - 포크된 자식의 상태를 기다리거나 반환합니다.
PCNTL_WAIT: 프로세스 동기화와 종료
PHP의 PCNTL 확장 기능은 프로세스 관리를 위한 다양한 함수를 제공합니다. `pcntl_wait()` 함수는 프로세스 동기화와 종료를 관리하는 데 사용됩니다.
pcntl_wait() 함수
`pcntl_wait()` 함수는 호출한 프로세스의 자식 프로세스를 기다립니다. 자식 프로세스가 종료되면 `pcntl_wait()` 함수는 자식 프로세스의 상태를 반환합니다. 만약 자식 프로세스가 아직 종료되지 않았다면 `pcntl_wait()` 함수는 0을 반환합니다.
# 예제 1: 자식 프로세스 기다리기
#hostingforum.kr
php
<?php
// 부모 프로세스
$pid = pcntl_fork();
if ($pid == -1) {
die("fork() failed!");
} elseif ($pid) {
// 부모 프로세스
echo "부모 프로세스: 자식 프로세스 기다리기...
";
pcntl_wait($status);
echo "자식 프로세스 종료
";
} else {
// 자식 프로세스
echo "자식 프로세스: 종료되기 전...
";
sleep(5);
echo "자식 프로세스: 종료
";
exit(0);
}
?>
이 예제에서는 부모 프로세스가 자식 프로세스를 기다리며, 자식 프로세스가 종료되면 부모 프로세스가 종료됩니다.
pcntl_waitpid() 함수
`pcntl_waitpid()` 함수는 `pcntl_wait()` 함수와 유사하지만, 자식 프로세스의 PID를 지정할 수 있습니다. 만약 자식 프로세스가 아직 종료되지 않았다면 `pcntl_waitpid()` 함수는 0을 반환합니다.
# 예제 2: 특정 자식 프로세스 기다리기
#hostingforum.kr
php
<?php
// 부모 프로세스
$pid1 = pcntl_fork();
$pid2 = pcntl_fork();
if ($pid1 == -1 || $pid2 == -1) {
die("fork() failed!");
} elseif ($pid1) {
// 부모 프로세스
echo "부모 프로세스: 자식 프로세스 기다리기...
";
pcntl_waitpid($pid2, $status);
echo "자식 프로세스 2 종료
";
} elseif ($pid2) {
// 자식 프로세스 2
echo "자식 프로세스 2: 종료되기 전...
";
sleep(5);
echo "자식 프로세스 2: 종료
";
exit(0);
} else {
// 자식 프로세스 1
echo "자식 프로세스 1: 종료되기 전...
";
sleep(10);
echo "자식 프로세스 1: 종료
";
exit(0);
}
?>
이 예제에서는 부모 프로세스가 자식 프로세스 2를 기다리며, 자식 프로세스 2가 종료되면 부모 프로세스가 종료됩니다.
결론
`pcntl_wait()` 함수와 `pcntl_waitpid()` 함수는 프로세스 동기화와 종료를 관리하는 데 사용됩니다. `pcntl_wait()` 함수는 호출한 프로세스의 자식 프로세스를 기다리며, `pcntl_waitpid()` 함수는 특정 자식 프로세스를 기다립니다. 이 두 함수는 프로세스 관리에 중요한 역할을 합니다.
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.