日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux中的信号2——进程如何处理信号?

發布時間:2023/12/20 linux 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux中的信号2——进程如何处理信号? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

以下內容源于朱有鵬《物聯網大講堂》課程的學習整理,如有侵權,請告知刪除。


1、signal函數介紹




(1)舉例:用signal函數處理SIGINT信號(這個信號由ctrl+c時發出)

  • 默認處理
  • 忽略處理
  • 捕獲處理

#include <stdio.h> #include <signal.h> #include <stdlib.h>typedef void (*sighandler_t)(int);void func(int sig) {if (SIGINT != sig)return;printf("func for signal: %d.\n", sig); }int main(void) {sighandler_t ret = (sighandler_t)-2;//signal(SIGINT, func); // 指定信號SIGINT為綁定處理函數//signal(SIGINT, SIG_DFL); // 指定信號SIGINT為默認處理ret = signal(SIGINT, SIG_IGN); // 指定信號SIGINT為忽略處理if (SIG_ERR == ret){perror("signal:");exit(-1);}printf("before while(1)\n");while(1);printf("after while(1)\n");return 0; }

  • signal函數綁定一個捕獲函數后,信號發生后會自動執行綁定的捕獲函數,并且把信號編號作為傳參傳給捕獲函數;
  • signal的返回值在出錯時為SIG_ERR,綁定成功時返回信號之前綁定的舊的處理函數。(因為我們用signal為信號綁定了新的處理函數)

(2)signal函數的優點和缺點

  • 簡單好用,捕獲信號常用;
  • 綁定處理函數的這種方式,使用signal時,不同版本可能不同。
  • 無法簡單直接得知之前設置的對信號的處理方法。


2、sigaction函數介紹





(1)兩個都是API,但sigaction比signal更具有可移植性

  • sigaction可以單獨設置新的捕獲,或者單獨只獲取舊的捕獲函數(將新的傳參為NULL);
  • signal函數不能單獨獲取舊的捕獲函數,必須設置新的捕獲函數,傳參后函數返回才獲取舊的捕獲函數。

(2)用法關鍵是2個sigaction指針



總結

以上是生活随笔為你收集整理的linux中的信号2——进程如何处理信号?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。