
pcntl_sigprocmask 함수는 프로세스의 시그널 마스크를 설정할 때 사용하는 함수입니다. 이 함수의 첫 번째 인자는 옵션을 의미하며, 두 번째 인자는 시그널 마스크를 의미합니다.
pcntl_sigprocmask 함수의 옵션은 다음과 같습니다.
- PCNTL_SIG_BLOCK: 시그널 마스크를 설정합니다.
- PCNTL_SIG_UNBLOCK: 시그널 마스크를 해제합니다.
- PCNTL_SIG_SETMASK: 현재 시그널 마스크를 설정합니다.
예를 들어, 프로세스가 SIGINT (Ctrl+C) 시그널을 받지 않도록 설정하고 싶다면, 다음 코드를 사용할 수 있습니다.
#hostingforum.kr
php
$old_mask = pcntl_sigprocmask(PCNTL_SIG_BLOCK, array(SIGINT));
이 코드는 SIGINT 시그널을 받지 않도록 설정합니다. $old_mask 변수에는 이전 시그널 마스크가 저장됩니다.
또한, 시그널 마스크를 설정할 때 사용하는 타입은 array 타입입니다. array 타입에는 시그널을 받지 않도록 설정하고 싶은 시그널을 포함할 수 있습니다.
#hostingforum.kr
php
$old_mask = pcntl_sigprocmask(PCNTL_SIG_BLOCK, array(SIGINT, SIGTERM));
이 코드는 SIGINT 시그널과 SIGTERM 시그널을 받지 않도록 설정합니다.
시그널 마스크를 설정하는 방법은 다음과 같습니다.
- SIGKILL (9): 프로세스를 강제 종료합니다.
- SIGINT (2): Ctrl+C 시그널입니다.
- SIGTERM (15): 프로세스를 종료합니다.
- SIGQUIT (3): Ctrl+\ 시그널입니다.
- SIGHUP (1): 프로세스가 종료되었습니다.
- SIGPIPE (13): 파이프에 데이터를 전송할 수 없습니다.
- SIGALRM (14): 타이머가 만료되었습니다.
- SIGUSR1 (10): 사용자 정의 시그널입니다.
- SIGUSR2 (12): 사용자 정의 시그널입니다.
이러한 시그널을 받지 않도록 설정하고 싶다면, pcntl_sigprocmask 함수를 사용할 수 있습니다.
2025-08-08 02:50