国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

iTOP4412開發板運行之進程通信專題 | 信號通信

發布時間:2019-9-10 10:42    發布者:落風
當我們在win上遇到一個沒有辦法正常關閉的軟件的時候,我們可以打開任務管理器,強制結束這個進程,同理。在linux上也有類似的功能,比如從終端敲入ctrl+c組合鍵來產生一個信號,當運行中的進程捕捉到這個信號后就會做出反應。
我們在win上可以使用快捷鍵進入任務管理器,那么linux中會在哪些情況下會產生信號呢?
那么linux有多少種信號呢,我們可以通過命令kill命令來查看,如下圖:
通過上面的截圖我們可以發現,一共有64種信號,每個信號都是以sig開頭,信號的名稱是在signal.h中定義的。
本次文章主要涉及到三個內容,一,信號的發送,二,信號的接收,三,信號的處理。
第一部分:信號的發送
我們通過一個小例子來認識下信號的發送:
這個程序主要用到了kill函數, 因為用戶空間是不具備發送信號的能力的,只有內核才可以發信號,內核有那么多信號,我們要發哪個信號,并且發給誰呢?那么我們就需要先告訴內核進程PID,信號ID是多少,kill函數就幫我們解決了這個問題,函數原型:
所以在上面的例子中,我們就可以通過kill函數來向內核發送一次產生信號的請求。
我們再來看一個和kill函數很像的函數,raise函數 ,與kill函數不同的是,它沒有第一個參數,他不知道要發信號給誰,所以他只能發信號給自己。我們來看下這個例子:
編譯并運行:
函數原型:
從kill和raise的函數原型上看,raise沒有pid這個參數,所以raise是可以通過kill來實現的。等價于:
還有一個需要了解的函數alarm函數,與raise函數不同的是,他只能發alarm信號,并且可以定時發送信號,而raise是立刻讓內核發信號。所以這個函數的參數沒有pid號,也沒有信號ID,只有一個延遲的秒數。需要注意的是,一個進程只能有一個alarm時間,函數原型:
第一部分信號發送總結:
用戶空間不能發送信號,是通過系統調用函數告訴內核發什么信號,發給誰,讓內核來發送的,只有內核才可以發信號。可以使用kill,raise,alarm函數來讓內核發送信號。
第二部分信號接收
我們可以使用pause來接收信號,pause函數使該進程暫停讓出CPU。我們來看下下面這個例子,當我們在鍵盤上按下ctrl+c的時候,程序收到SIGINT信號會被喚醒,然后執行fun函數,處理完之后再返回繼續運行該程序,不按則只打印process start(進入睡眠狀態)。
函數原型:
第三部分信號處理
信號的處理有三種方式,分別為:1,忽略,就是收到信號后,什么也不做,不處理。2,按照默認的方式處理。3,捕獲并處理,捕獲到信號后,執行我們自己想執行的代碼。我們先來看下signal函數:
第一種處理方式,忽略:
我們來看下這個例子。
編譯并運行,因為我們使用的參數為SIG_IGN,所以我們按下ctrl+c的時候并不能中斷程序運行.
第二種處理方式,按照默認的方式處理,我們把上個例子中的參數改成SIG_DFL,如下:
編譯并運行,當我們按下ctrl+c的時候,會中斷我們程序。
第三種處理方式,執行我們自己的代碼:
當我們按下ctrl+c的時候,會進去到fun函數。
三個部分總結:
1,我們可以使用kill命令來查看有多少個信號,在這么多信號中,我們要格外記住以下幾個:
2,用戶空間不能發送信號,信號的產生來自內核,讓內核產生信號的方式有:通過鍵盤輸入ctrl+c等。當程序運行出錯時,內核會給進程發送一個信號,如浮點溢出等,還有就是一個程序可以通過調用函數來給另外一個進程發信號,如kill。
3,進程收到信號后,可以忽略,或者按照默認的方式處理,或者按照自己的處理函數來處理,signale是永久注冊的,每次都有效,如果不想的話這樣可以使用sigaction。


本文地址:http://m.qingdxww.cn/thread-568425-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 利用SAM E54 Xplained Pro評估工具包演示CAN轉USB橋接器以及基于CAN的主機和自舉程序應用程序
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 貿澤電子(Mouser)專區
關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本影院在线观看 | 99久久精品免费精品国产 | 国产欧美日本亚洲精品一4区 | 亚洲综合一区二区三区四区 | 国产精久久一区二区三区 | 欧美在线第一二三四区 | 奶茶视频官网下载页 | 草莓丝瓜视频下载 | 九九视频在线看精品 | 麻豆日韩国产精品欧美在线 | 青青草久热精品视频在线观看 | 日本久久久久 | 欧美国产日韩在线 | 中文字幕欧美在线观看 | 韩国黄网| 亚洲激情中文字幕 | www.四虎在线 | 九九热免费视频 | 97在线视频免费观看费观看 | 亚洲国产成人九九综合 | 国产网爆门 | 色综合久久久久久久久久久 | 一级毛片aaaaaa视频免费看 | 亚洲狠狠婷婷综合久久蜜桃 | 国产亚洲福利精品一区二区 | 欧美视频在线播放 | 国产精品成人观看视频免费 | 两个人免费观看高清视频图 | 男人v天堂| 99国内精品久久久久久久 | 午夜色视频在线观看 | 一级特黄女人生活片 | h黄动漫免费观看 | 精品一久久香蕉国产线看观看下 | 五月欧美激激激综合网色播 | 好爽毛片一区二区三区四区 | 欧美一区二区三区在线播放 | 97毛片| 日韩高清一区二区三区五区七区 | 国产一在线精品一区在线观看 | 一级毛片短视频 |