linux 訊號處理

2021-05-24 11:39:57 字數 546 閱讀 4159

linux下的程式,有時候需要在接到一些終止訊號後,進行清理工作再退出。

//訊號2的處理函式

void signalhandler_2(int signal) {

//cleanup

//exit(2);

int main(int argc, char* argv) {

//處理訊號2

struct sigaction act_2, act_15;

act_2.sa_handler=signalhandler_2;

act_15.sa_handler=sig_ign; //忽略訊號15(比如不想讓其他訊號對程式有影響)

sigemptyset(&act_2.sa_mask);

sigaddset(&act_2.sa_mask, sigterm | sigint); //在對訊號2進行處理的過程中,遮蔽後續的2和15訊號

sigaction(sigint, &act_2,null);

sigaction(sigterm, &act_15,null);

//...

Linux 訊號處理

用sigcation函式 在標頭檔案signal.h中 來設定自己的訊號處理函式,用法參見 各種訊號參見 寫了個sigint,也就是c c鍵的處理例子 include includestruct sigaction newsigint,oldsigint void signalinthandler ...

Linux訊號處理

訊號是一種軟體中斷,程式收到訊號時,就會呼叫相應的處理函式 如果有註冊 void signal int signum,void handler int int 設定訊號處理方式 訊號處理函式原型 void foo int arg 系統定義的訊號有 signals.define sighup1 han...

Linux程序訊號 訊號處理

一 訊號相關概念 1.實際執行訊號的處理動作稱為訊號遞達 delivery 2.訊號從產生到遞達之間的狀態稱為訊號未決 pending 不一定會立即delivery 3.程序可以選擇阻塞 block 某個訊號。不會遞達 4.被阻塞的訊號產生時將保持在未決狀態,知道程序解除對此訊號 的阻塞,才會執行遞...