[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というヘッダファイルにあります
 
 
#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にキャプチャ