일반적으로 사용되는 신호
kill sigterm sigkill【kill 명령】
ctrl+c sigint【키보드 문제】
-
reload sinhub【일반적으로 터미널에서 실행됨】
ctrl+z sigstop [키보드 발행]
Timer sigalarm [프로세스에는 타이머가 하나만 있을 수 있으며, 그 이상은 새 값으로 덮어쓰게 됩니다.]
sigkill 및 sinstop은 신호 처리 중에 사용할 수 없습니다. (신호 처리는 무시할 수 있으며 기본 실행은 사용자 지정 처리입니다.)
PHP 신호의 작은 예
<?php function sighandler($signo){ echo 'just for sigint',"\n"; } function sighandler2($signo){ echo 'just for sigquit',"\n"; } declare(ticks=1); pcntl_signal(SIGINT,"sighandler"); pcntl_signal(SIGQUIT,"sighandler2"); for($i=1;$i<30;$i++){ file_put_contents('/home/tbtest/out.txt',"$i"."秒\n"); sleep(1); }
~
실행 결과
root@lyh:/home/tbtest# php sigint.php ^Cjust for sigint ^Cjust for sigint ^Cjust for sigint just for sigquit ^Cjust for sigint ^Cjust for sigint ^Z [1]+ Stopped php sigint.php root@lyh:/home/tbtest# bg [1]+ php sigint.php & root@lyh:/home/tbtest# fg php sigint.php root@lyh:/home/tbtest# cat out.txt 29秒 root@lyh:/home/tbtest#
Sigquit 캡처 정보
Sigquit에 대한 jsut는 위에서 캡처되었습니다. 별도로 시작했습니다. 터미널을 구입하세요.
root@lyh:~# ps -aux |grep php root 16385 0.5 1.9 377720 19468 pts/2 S+ 15:09 0:00 php sigint.php root 16390 0.0 0.0 11744 932 pts/0 S+ 15:09 0:00 grep --color=auto php root@lyh:~# kill -s sigquit 16385
ps: pcntl_signal_dispatch가 틱보다 효율적입니다