訊號的傳送 kill raise

2021-06-01 21:57:16 字數 747 閱讀 4903

1. 函式說明:

kill和raise是用來傳送訊號的:

kill把訊號傳送給程序或程序組;

raise把訊號傳送給(程序)自身.

他們的原型如下:

#include 

int kill(pid_t pid, int signo);

int raise(int signo);

成功則返回0, 出錯則返回-1

從原型上可以看出, raise函式是可以通過kill實現的.

raise(signo);

等價於:

kill(getpid(), signo);

2. pid引數:

kill函式中的pid引數, 它有以下4種情況:

pid > 0: 將該訊號傳送給程序id為pid的程序. 

pid == 0: 將該訊號傳送給與傳送程序屬於同一程序組的所有程序(不包括核心程序和init程序). 此時, 傳送程序必須具有向這些程序傳送訊號的許可權. 

pid < 0: 將該訊號發給其程序組id等於pid絕對值的所有程序(不包括核心程序和init程序). 此時, 傳送程序必須具有向這些程序傳送訊號的許可權. 

pid == -1: 將該訊號傳送給傳送程序有許可權向它們傳送訊號的系統上的所有程序.(不包括核心程序和init程序). 

3. signo引數:

posix.1將編號為0的訊號定義為空訊號. 如果signo引數是0, 則kill仍執行正常的錯誤檢查, 但不傳送訊號. 這被用來確定乙個程序是否存在.

訊號(分類 傳送)

linux訊號機制基本上是從unix系統中繼承過來的。早期unix系統中的訊號機制比較簡單和原始,後來在實踐中暴露出一些問題,它的主要問題是 程序每次處理訊號後,就將對訊號的響應設定為預設動作。在某些情況下,將導致對訊號的錯誤處理 因此,使用者如果不希望這樣的操作,那麼就要在訊號處理函式結尾再一次呼...

Linux C程式設計 訊號的傳送

前面介紹了linux中訊號的一些基本情況,這裡總結一下訊號的傳送。訊號的傳送主要由函式kill raise sigqueue alarm settimer abort 來完成。include include int kill pid t pid,int sig 關於第乙個引數,有如下注意 raise...

訊號的傳送 接收 處理函式

訊號的傳送函式 kill函式 傳送訊號給任意程序 標頭檔案 include include 函式原型 int kill pid t pid,int sig 引數 pid 正數,要接收訊號的程序號 0,訊號被傳送到與pid程序相同的程序組中 1,訊號傳送給所有的程序表中的程序 sig 訊號 返回 成功...