signal 捕捉訊號

2021-07-16 16:51:31 字數 1161 閱讀 9449

/**

* @file demo6.c

* @synopsis  

** #inclue

* typeof void (*sighandler_t)(int);

* sighandler_t signal(int signum,sighandler_t handler);

* * @author mrclimb

* @version 1.1.0

* @date 2012-05-21

*/#include

#include

#include

#include

#define inputlen 100

int main(int argc, char **argv)

else

}while(strncmp(input,"quit",4) != 0);

return 0;

}void siginthandler(int sigint)

void sigquithandler(int sigquit)

/***

*************result 分析*****************

** 當程式a.out 時

* 1:正常輸入非exit,則正常輸出。

* 2: 當按下 ^c 時程式並沒有退出,說明這裡的訊號被 signal 捕捉,同時呼叫相應的函式列印結果

* 3: 當按下 ^'\' 同上的結果(說明不是老鼠夾)

* 4: 當連續按 ^c^c^c^c 相同訊號時這裡只接收乙個該訊號

* 5: 當連續按 ^'\'^'\'^'\' 也同上只接收乙個訊號

* 6: 當按 ^c^'\' or ^'\'^c 時候會出現不同結果,只處理後按的那個訊號(連續不同訊號,優先順序處理最後乙個,哪個訊號

*          在後誰優先順序高)

* 7: 當按hello^c 時字元並沒有輸出來,而是捕捉訊號,列印捕捉呼叫的函式

*    訊號與輸入交替進行時會把輸入給清掉

*  (糸統呼叫執行過程中來訊號)輸入阻塞過程中來訊號

**  // x訊號處理過程中又來x訊號處理方式

// x 訊號處理過程中又來了y訊號處理方式

****************************************/

用signal函式捕捉訊號SIGINT

用系統呼叫函式fork 建立兩個子程序,再用系統呼叫函式signal 讓父程序捕捉訊號sigint 用kill命令來觸發 當捕捉到中斷訊號後,父程序用系統呼叫函式kill 向兩個子程序發出訊號,子程序捕捉到父程序發來的訊號後,分別輸出下列資訊後終止 child process 1 is killed...

Signal訊號處理

在goahead的linux模組main.c 檔案中,main函式中出現了以下三個語句 signal sigpipe,sig ign signal sigint,siginthandler signal sigterm,siginthandler 這三條語句與網路訊號有關。在這裡做咯記錄。1.訊號概...

signal訊號總結

signaldescription sigabrt 由呼叫abort函式產生,程序非正常退出 sigalrm 用alarm函式設定的timer超時或setitimer函式設定的interval timer超時 sigbus 某種特定的硬體異常,通常由記憶體訪問引起 sigcancel 由solari...