linux下能夠通過訊號機制來實現程式的軟中斷。
在程式執行的時候按下ctrl+c、ctrl+z或者kill乙個程序的時候事實上都等效於向這個程序傳送了乙個特定訊號,當程序捕獲到訊號後,程序會被中斷並馬上跳轉到訊號處理函式。
預設情況下乙個程式對ctrl-c發出的訊號(sigint)的處理方式是退出程序。所以當我們按下ctrl-c的時候就能夠終止乙個程序的執行。
signal函式原型:
#include
void (*signal(int sig_num, void (*handler)(int)))(int);
其中,第乙個引數指定訊號的值,第二個引數指定針對前面訊號值的處理,可以忽略該訊號(引數設為sig_ign);可以採用系統預設方式處理訊號(引數設為sig_dfl);也可以自己實現處理方式(引數指定乙個函式位址)。
原理:signal函式用於向系統註冊處理某一訊號的函式,實際上就是告訴系統:當某個訊號發生了,就執行這個函式。當signal被呼叫時,它返回訊號處理函式的位址。
sigint(2)
程式終止(interrupt)訊號, 在使用者鍵入intr字元(通常是ctrl-c)時發出,用於通知前台程序組終止程序。
訊號機制 Python訊號處理 signal模組
本文是訊號機制三篇記錄中的第二篇,介紹python語言中負責訊號處理的signal模組,並會給出一些小demo 第一篇簡單介紹了linux訊號機制,第三篇則給出關於訊號的乙個應用。三篇組成乙個系列,想起拋磚引玉的作用,希望對大家能有所幫助。該模組提供python中訊號處理的機制,下面是幾個常用的方法...
Linux 信 號 機 制
前面介紹了訊號的基本概念,在這一節中,我們將介紹核心如何實現訊號機制。即核心如何向乙個程序傳送訊號 程序如何接收乙個訊號 程序怎樣控制自己對訊號的反應 核心在什麼時機處理和怎樣處理程序收到的訊號。還要介紹一下setjmp和longjmp在訊號中起到的作用。1 核心對訊號的基本處理方法 核心給乙個程序...
linux 訊號機制
本文旨在弄懂linux中的訊號工作原理 kill l 命令可以檢視linux下所有訊號 2.1 使用者在終端按下某些鍵時,終端驅動程式會傳送訊號給前台程序 例如ctrl c產生sigint訊號,ctrl 產生sigquit訊號,ctrl z產生sigtstp訊號 2.2 硬體異常產生訊號,這些條件由...