よく使用されるシグナル
kill sigterm sigkill【kill コマンド】
-
ctrl c sigint [キーボードで発行]
reload sinhub [通常は端末から発行]
ctrl z sigstop [キーボードで発行] ]
Timer sigalarm [プロセスに設定できるタイミング時間は 1 つだけです。それ以上は新しい値によって上書きされます]
sigkill と sinstop が実行されています信号処理を無視できない場合 (信号処理は無視でき、デフォルトでユーザー指定の処理が実行されます)
php signal small example
<?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は、ティック