訊號的相關知識

2021-07-23 23:56:02 字數 2698 閱讀 8079

1.訊號型別

下面是幾種常見的訊號: 

§ sighup: 從終端上發出的結束訊號 

§ sigint: 來自鍵盤的中斷訊號(ctrl-c) 

§ sigstop:來自鍵盤(ctrl-z)或除錯程式的停止執行訊號,暫停程序 

§ sigkill:該訊號結束接收訊號的程序,殺死程序 

§ sigterm:kill 命令發出的訊號 

§ sigchld:子程序停止或結束時通知父程序

2.訊號處理方式

當某訊號出現時,將按照下列三種方式中 

的一種進行處理: 

1)、忽略此訊號 

大多數訊號都按照這種方式進行處理,但有兩種訊號決不能被忽略,它們是: 

sigkill\sigstop。 

這兩種訊號不能被忽略的原因是:它們向超級使用者提供了一種終止或停止程序的方法 

2)、執行使用者希望的動作 

通知核心在某種訊號發生時,呼叫乙個使用者函式。在使用者函式中,執行使用者希望的處理 

3)、執行系統預設動作 

對大多數訊號的系統預設動作是終止該程序

3.訊號函式

1)kill

函式作用:傳送訊號給指定的程序 

函式原型:int kill(pid_t pid, int signo)

引數:

pid引數有四種不同的情況: 

1、pid>0 

將訊號傳送給程序id為pid的程序。 

2、pid == 0 

將訊號傳送給同組的程序。 

3、pid < 0 

將訊號傳送給其程序組id等於pid絕對值的程序。 

4、pid ==-1 

將訊號傳送給所有程序

返回值:成功為0,失敗為-1; 

標頭檔案: 

#include

#include

函式例子:

#include 

#include

#include

#include

#include

int main()

if(pid == 0)

else

else

}}

執行結果: 

pid=25831 

kill 25831 

找到程序號,並且殺死該程序。

2.raise

函式作用:傳送訊號給自身 

函式原型:int raise(int signo)

返回值:成功為0,失敗為-1; 

標頭檔案: 

#include

#include

程式例子

#include 

#include

#include

#include

#include

#include

#include

#include

#include

int main()

if(pid == 0)

else

waitpid(pid, null, 0);

exit(0);

}}

執行結果 

child (pid:25923) is waiting for any signal 

parent kill child process 25923 

子程序等待該程序的訊號,父程序殺死子程序。

3.alarm

函式作用:設定訊號傳送時鐘 

函式原型:unsigned int alarm(unsigned int seconds)

引數:seconds: 經過了指定的seconds秒後會產生訊號sigalrm。 

返回值:成功為0,失敗為-1; 

標頭檔案: 

#include

#include

4.pause

函式作用:讓程序暫停直到訊號出現 

函式原型:int pause(void)

說明:令目前程序暫停進入睡眠狀態,直到被訊號中斷 

標頭檔案: 

#include

5.signal

函式作用:設定訊號處理方式 

函式原型:void (*signal (int signo, void (* sighandler_t)(int)))(int)

說明:如何理解?

typedef void (*sighandler_t)(int)  sighandler_t ;

sighandler_t signal(int signum, sighandler_t handler))

func可能的值是: 

1、sig_ign:忽略此訊號 

2、sig_dfl: 按系統預設方式處理 

3、訊號處理函式名:使用該函式處理

標頭檔案: 

#include

UNIX Linux 訊號相關知識

一 基本的概念 1 中斷 中斷概念 中止 暫停當前正在執行的程序,轉而去執行其它的任務。硬中斷 來自硬體裝置的中斷 軟中斷 來自其它程式的中斷 2 訊號 訊號是一種軟中斷,可以把他看作是程序與程序 核心與程序通訊的一種方式,它為程序的非同步執行,提供了技術支援。3 常見的訊號 sigint 2 終端...

訊號量的相關知識

概念 訊號量 又名 訊號燈 與其他程序間通訊方式不大相同,主要用途是保護臨界資源.分類 二值訊號燈 訊號燈的值只能取0或1 計數訊號燈 訊號燈的值可以取任意非負值 使用訊號燈 1.開啟或建立訊號燈 2訊號燈值操作 3.獲得或設定訊號燈屬性 訊號api 1.semget 函式作用 建立訊號量 函式原型...

訊雜比 訊號加噪相關的知識

訊雜比 即signal noise ratio 即snr 它的單位為 db,公式為 snr 10lg ps pn 其中 ps 表示訊號的有效功率,pn 表示雜訊的有效功率 假如有乙個一維的訊號 x 它的平均功率可以這麼算 power sum x x size x dbw 是乙個表示功率絕對值的單位 ...