
pcntl_wifsignaled 함수는 프로세스가 신호를 받았는지 여부를 확인하는 데 사용됩니다. 이 함수가 반환하는 값은 1(true) 인지 0(false) 인지 여부를 알려주지 않습니다. 대신, 이 함수가 반환하는 값은 1(true) 인 경우 프로세스가 신호를 받았으며, 0(false) 인 경우 프로세스가 신호를 받지 않았음을 의미합니다.
이 함수를 사용할 때는 pcntl_wstopsig() 함수와 pcntl_wexitstatus() 함수를 함께 사용해야 합니다. pcntl_wstopsig() 함수는 프로세스가 신호를 받았을 때 중단된 시그널을 반환하며, pcntl_wexitstatus() 함수는 프로세스가 신호를 받았을 때 종료된 시그널을 반환합니다.
예를 들어, 프로세스가 SIGINT 신호를 받았을 때는 다음과 같이 처리할 수 있습니다.
#hostingforum.kr
php
$pid = pcntl_fork();
if ($pid == -1) {
die('Could not fork');
} elseif ($pid) {
// 부모 프로세스
pcntl_waitpid($pid, $status);
if (pcntl_wifsignaled($status)) {
$sig = pcntl_wstopsig($status);
if ($sig == SIGINT) {
// SIGINT 신호를 받았을 때 처리
echo "SIGINT 신호를 받았습니다.n";
}
}
} else {
// 자식 프로세스
// SIGINT 신호를 받을 때 처리
pcntl_signal(SIGINT, function($sig) {
echo "SIGINT 신호를 받았습니다.n";
exit(0);
});
while (true) {
// 프로세스 루프
}
}
이 함수를 사용하여 프로세스가 신호를 받았는지 확인하는 방법은 다음과 같습니다.
1. pcntl_wifsignaled() 함수를 사용하여 프로세스가 신호를 받았는지 여부를 확인합니다.
2. pcntl_wstopsig() 함수를 사용하여 프로세스가 신호를 받았을 때 중단된 시그널을 반환합니다.
3. pcntl_wexitstatus() 함수를 사용하여 프로세스가 신호를 받았을 때 종료된 시그널을 반환합니다.
4. 프로세스가 신호를 받았을 때 처리를 위해 pcntl_signal() 함수를 사용합니다.
2025-06-05 00:32