라이브러리
[PHP] pcntl_signal - 신호 핸들러를 설치합니다
PCNTL Signal
PHP의 PCNTL Signal은 프로세스에 대한 신호를 처리하는 기능입니다. 신호는 프로세스에 보내질 수 있는 이벤트로, 예를 들어 Ctrl+C, Ctrl+Z, SIGINT, SIGTERM 등이 있습니다. PCNTL Signal은 이러한 신호를 처리하는 데 사용됩니다.
PCNTL Signal 함수
PCNTL Signal 함수는 다음과 같습니다.
- `pcntl_signal($signo, $handler)`: 신호 처리 핸들러를 등록합니다.
- `pcntl_signal_dispatch()`: 신호 처리 핸들러를 호출합니다.
- `pcntl_signal_status($signo)`: 신호 처리 핸들러의 상태를 반환합니다.
예제
다음 예제는 PCNTL Signal을 사용하여 Ctrl+C 신호를 처리하는 방법을 보여줍니다.
#hostingforum.kr
php
<?php
function signal_handler($signo) {
switch ($signo) {
case SIGINT:
echo "Ctrl+C 신호를 받았습니다.
";
break;
case SIGTERM:
echo "SIGTERM 신호를 받았습니다.
";
break;
default:
echo "unknown 신호
";
break;
}
exit(0);
}
pcntl_signal(SIGINT, 'signal_handler');
pcntl_signal(SIGTERM, 'signal_handler');
while (true) {
// 프로세스가 계속 실행됩니다.
sleep(1);
}
?>
이 예제에서는 `signal_handler` 함수를 등록하여 Ctrl+C와 SIGTERM 신호를 처리합니다. `while` 루프를 사용하여 프로세스가 계속 실행됩니다.
예제 2
다음 예제는 PCNTL Signal을 사용하여 프로세스 간 통신을 처리하는 방법을 보여줍니다.
#hostingforum.kr
php
<?php
function signal_handler($signo) {
switch ($signo) {
case SIGUSR1:
echo "SIGUSR1 신호를 받았습니다.
";
$pid = pcntl_fork();
if ($pid == -1) {
die("fork failed");
} elseif ($pid) {
// 부모 프로세스
pcntl_wait($status);
} else {
// 자식 프로세스
echo "자식 프로세스입니다.
";
exit(0);
}
break;
default:
echo "unknown 신호
";
break;
}
}
pcntl_signal(SIGUSR1, 'signal_handler');
while (true) {
// 프로세스가 계속 실행됩니다.
sleep(1);
}
?>
이 예제에서는 `signal_handler` 함수를 등록하여 SIGUSR1 신호를 처리합니다. SIGUSR1 신호를 받으면 프로세스가 자식 프로세스를 생성하고, 부모 프로세스는 자식 프로세스를 기다립니다.
참고
- PCNTL Signal은 프로세스에 대한 신호를 처리하는 기능입니다.
- PCNTL Signal 함수는 `pcntl_signal`, `pcntl_signal_dispatch`, `pcntl_signal_status`가 있습니다.
- 예제는 PCNTL Signal을 사용하여 Ctrl+C 신호와 프로세스 간 통신을 처리하는 방법을 보여줍니다.
- PCNTL Signal은 프로세스에 대한 신호를 처리하는 데 사용됩니다.
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.