1. 程式人生 > >signal函式詳細用法

signal函式詳細用法

傳智掃地僧課程學習筆記。

訊號是在軟體層次上對中斷的一種模擬,所以通常把它稱為是軟中斷


訊號和中斷的區別

訊號與中斷的相似點:

(1)採用了相同的非同步通訊方式;

(2)當檢測出有訊號或中斷請求時,都暫停正在執行的程式而轉去執行相應的處理程式;

(3)都在處理完畢後返回到原來的斷點;

(4)對訊號或中斷都可進行遮蔽。

 訊號與中斷的區別:

(1)中斷有優先順序,而訊號沒有優先順序,所有的訊號都是平等的;

(2)訊號處理程式是在使用者態下執行的,而中斷處理程式是在核心態下執行;

(3)中斷響應是及時的,而訊號響應通常都有較大的時間延遲。

SIGABRT  程序停止執行 6

SIGINT     

終端中斷  2

SIGKILL     停止程序(此訊號不能被忽略或捕獲)

SIGQUIT   終端退出   3

 handler這個函式必須有一個int型別的引數(即接收到的訊號程式碼),它本身的型別是void,

handler也可以是下面兩個特殊值:

                              SIG_IGN     遮蔽該訊號

                              SIG_DFL     恢復預設行為

/*
       #include <signal.h>
       typedef void (*sighandler_t)(int);
       sighandler_t signal(int signum, sighandler_t handler);
*/

signal的函式原型,這裡要注意它的返回值的型別,

它的引數,第一個是訊號的編號,也就是具體是哪一個訊號,固定的寫法,沒什麼好說的,

第二個引數handler,

1, 賦值SIG_IGN代表忽略訊號,

2,或者你可以自己寫個訊號處理函式,傳給它地址,

3,如果你需要修改上面的設定,可以恢復預設SIG_DFL ,

下面是一個自己寫的訊號處理函式,

說兩點,

1,預設自帶一個int型別引數,//開始還在找,這個num哪裡傳進去的,

2,返回型別是void,

void handler(int num)
{
	printf("recv num:%d \n", num);	
	if (num == SIGQUIT)
	{
		//exit(0);
	}
}


下面是signal返回值的應用場景,

 	if (signal(SIGINT, handler) == SIG_ERR)
 	{
 			perror("signal err"); //errno
 			exit(0);
 	} 
     這是它的返回  typedef void (*sighandler_t)(int);




相關推薦

signal函式詳細用法

傳智掃地僧課程學習筆記。 訊號是在軟體層次上對中斷的一種模擬,所以通常把它稱為是軟中斷 訊號和中斷的區別 訊號與中斷的相似點: (1)採用了相同的非同步通訊方式; (2)當檢測出有訊號或中斷請求時,都暫停正在執行的程式而轉去執行相應的處理程式; (3)都在處理完畢後

select函式詳細用法解析

1.表頭檔案 #include #include #include 2.函式原型 int select(int n,fd_set * readfds,fd_set * writefds,fd_set * exceptfds,struct timeval * timeo

c語言中signal函式詳細解釋說明

對於 訊號處理函式 位於 <signal.h> 中.void ( *signal( int sig, void (* handler)( int ))) ( int );這個函式的宣告很是嚇人, 一看就難弄懂. 下面是解釋用法.一步一步解釋:int (*p)();這是一個函式指標, p所指向的函

select函式詳細用法解析(轉自:zhenhuaqin)

1.表頭檔案 #include <unistd.h> #include <stdlib.h> #include <fcntl.h> #include <sys/select.h> 2.函式原型 int s

signal ()函式詳細介紹

1. 功能 設定某一訊號的對應動作 2. 宣告 #include <signal.h> typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler

C語言常用庫函式(含詳細用法

一、數學函式 呼叫數學函式時,要求在原始檔中包下以下命令列: #include <math.h> 函式原型說明 功能 返回值 說明 int abs( int x) 求整數x的絕對值 計算結果 double fabs(double

Python3中高階函式lambda,filter,map,reduce,zip的詳細用法

在Python裡有五大高階函式,他們分別是lambda()匿名函式,filter()篩選函式,map()函式,reduce()函式,zip()函式。下面就讓我們來詳細的瞭解一下這五種函式的具體用法吧。 1.lambda()匿名函式 匿名函式lambda:是指一類無需定義識別符號(函式名)的函式或子程式。

OCP-1Z0-051 第96題 NVL2函式詳細用法

Examine the structure of the INVOICE table.name                Null           Type INV_NO             NOT NULL       NUMBER(3) INV_DATE                    

Python中sum函式詳細用法說明

#!/usr/bin/env python # -*- coding: utf-8 -*- # sum的最常見用法計算一個序列的累加和 print(sum([1, 2, 3])) # 6 # # sum 函式原型是 sum(iterable, start), 還可以給

Robot Framework自動化測試Selenium2Library庫詳細用法

www range fire 查看 int log world 定時 until 一、瀏覽器驅動 通過不同的瀏覽器執行腳本。 Open Browser Htpp://www.xxx.com chrome 瀏覽器對應的關鍵字: fi

sqlmap 詳細用法

amp per cor 攔截 按鈕 asc mss 人性化 order 1. 基礎用法: ./sqlmap.py -u “註入地址” -v 1 –dbs // 列舉數據庫./sqlmap.py -u “註入地址” -v 1 –current-db // 當前數據庫.

ios開發之--CAKeyframeAnimation的詳細用法

edi true nco 創建 rds repeat oval iat ima 簡單的創建一個帶路徑的動畫效果,比較粗糙,不過事先原理都是一樣的, 代碼如下: 1,創建動畫所需的view -(void)creatView { moveView = [UIView

Linux find、grep命令詳細用法

標準輸出 獲取參數 返回 管道 每一個 作用 實例 文件名 opts 在linux下面工作,有些命令能夠大大提高效率。本文就向大家介紹find、grep命令,他哥倆可以算是必會的linux命令,我幾乎每天都要用到他們。本文結構如下:find命令 find命令的一般形式

chmod命令詳細用法

com inux 管理者 資料 屬組 www 屬組用戶 字串 有用 轉載: 指令名稱 : chmod 使用權限 : 所有使用者 使用方式 : chmod [-cfvR] [--help] [--version] mode file... 說明 : Linux/Unix 的檔

批處理命令之Start的詳細用法

圖形用戶界面 用法 blog 中斷 空間 file 創建 單獨 詳細信息 Start啟動單獨的“命令提示符”窗口來運行指定程序或命令。如果在沒有參數的情況下使用,start 將打開第二個命令提示符窗口。語法start ["title"] [/dPat

select函數詳細用法解析

集合 cep 返回值 null 毫無 文件中 str 個數 for 1.表頭文件 #include #include #include 2.函數原型 int select(int n,fd_set * readfds,fd_set * writefds,fd_set * e

sed詳細用法及詳解

sed#語法:sed [options] ‘command‘ in_file[s] options 部分:-n 靜默輸出(不打印默認輸出) -e 給予sed多個命令的時候需要-e選項#sed -e ‘s/root/haha/g‘ -e ‘s/bash/wwwww/g‘ passwd > passwd.b

java statement詳細用法

給定 需要 bsp lec conn nec 類型 sta 繼承 轉載]java中Statement詳細用法 一,Statement的介紹 1,Statement 是 Java 執行數據庫操作的一個重要方法,用於在已經建立數據庫連接的基礎上,向數據庫發送要執行的SQL語句

C# DateTime.Now詳細用法

ont add 解釋 apr ddd date 顯示 () months //2008年4月24日 System.DateTime.Now.ToString("D"); //2008-4-24 System.DateTime.Now.ToString

chmod 權限 命令詳細用法

不可 chm 執行權限 控制 設定 ... strong -h 其他 指令名稱 : chmod 使用權限 : 所有使用者 使用方式 : chmod [-cfvR] [--help] [--version] mode file... 說明 : Linux/Unix 的檔案調用