■[UNIX] signal関数の使用例
#include
#include "ourhdr.h"
/* シグナルハンドラの定義 */
static void
sig_usr(int signo)
{
if (signo == SIGUSR1) {
printf("received SIGUSER1\n");
} else if (signo == SIGUSR2) {
printf("received SIGUSER2\n");
} else {
err_dump("received signal %d\n", signo);
}
return;
}
int
main(void)
{
/* シグナルハンドラを設定する。signal()は戻り値として今までのシグナルハンド
* ラもしくはSIG_ERRを返す。
*/
if (signal(SIGUSR1, sig_usr) == SIG_ERR) {
err_sys("cat't catch SIGUSER1");
}
if (signal(SIGUSR2, sig_usr) == SIG_ERR) {
err_sys("cat't catch SIGUSER2");
}
for (;;) {
pause();
}
}
=========================
$ ./a.out &
[1] 26081
$ kill -USR1 26081
$ received SIGUSER1
$ kill -USR2 26081
$ received SIGUSER2
$ kill 26081
[1]+ 終了しました ./a.out
signal01
投稿者 weijingli 時刻: 11/13/2007
ラベル: C++
Subscribe to:
Post Comments (Atom)
0 コメント:
Post a Comment