[linux]C言語Linuxシステムプログラミング-プロセス信号のキャプチャ
1054 ワード
typedef void( *sighandler_t)(int);
1.typedefでタイプに別名を付けます.
2.関数ポインタタイプの別名を定義します.
3.関数ポインタ(関数へのポインタ)
sighandler_t signal(int signum, sighandler_t handler);
1.関数プロトタイプ
2.カスタムタイプ別名を使用して、関数パラメータと関数として値を返します.
3.第1パラメータは信号の符号であり、第2パラメータは関数ポインタである
implicit-function-declaration(不明関数宣言)
sleep()関数は#includeというヘッダファイルにあります
実行結果:
信号2は私のctrl+cであり、信号15は私のkillプロセスidであるが、私のkill-9プロセスidの場合、signal(SIGKILL,handler)信号を使用して捕獲することはできない.
プロセス実行中...プロセス実行中...プロセス実行中...^C信号2プロセスの実行中にキャプチャ...プロセス実行中...プロセス実行中...信号15にキャプチャ
1.typedefでタイプに別名を付けます.
2.関数ポインタタイプの別名を定義します.
3.関数ポインタ(関数へのポインタ)
sighandler_t signal(int signum, sighandler_t handler);
1.関数プロトタイプ
2.カスタムタイプ別名を使用して、関数パラメータと関数として値を返します.
3.第1パラメータは信号の符号であり、第2パラメータは関数ポインタである
implicit-function-declaration(不明関数宣言)
sleep()関数は#includeというヘッダファイルにあります
#include
#include
#include
//
void myHandler(int signum){
printf(" %d
",signum);
}
int main(){
// ,
void(* handler)=myHandler;
// , int ,
signal(SIGINT,handler);// ctrl+c
signal(SIGTERM,handler);//
while(1){
printf(" ...
");
sleep(1);
}
}
実行結果:
信号2は私のctrl+cであり、信号15は私のkillプロセスidであるが、私のkill-9プロセスidの場合、signal(SIGKILL,handler)信号を使用して捕獲することはできない.
プロセス実行中...プロセス実行中...プロセス実行中...^C信号2プロセスの実行中にキャプチャ...プロセス実行中...プロセス実行中...信号15にキャプチャ