handler

シグナルハンドラをセットして、指定のシグナルが来たら、独自処理を行うようにしてみる。

Man page of SIGNAL

ハンドラ関数名はなんでもいいが、今回は便宜的にhandlerにする。
handlerの引数には、受け取ったシグナルのシグナル定数が渡される。

このような感じで、handlerを渡す。
今回もCtrl+CでSIGINTを送るので、SIGINTの値がsigに渡されるので、それをprintfで出力する。

$ vi handler.c
$ gcc handler.c -o handler
$ ./handler
process running...(signal(SIGINT, handler))
process running...(signal(SIGINT, handler))
process running...(signal(SIGINT, handler))
^Csig = 2
process running...(signal(SIGINT, handler))
process running...(signal(SIGINT, handler))
process running...(signal(SIGINT, handler))
^Csig = 2
process running...(signal(SIGINT, handler))
process running...(signal(SIGINT, handler))
^Csig = 2
process running...(signal(SIGINT, handler))
process running...(signal(SIGINT, handler))
$

Man page of SIGNAL
ここにはSIGINTは2とあるので、確かにSIGINTが来ている。

Sample/unixsyscall/handler/handler/src/handler at master · bg1bgst333/Sample · GitHub