程序間通訊之kill傳送訊號

2021-07-22 23:58:20 字數 1770 閱讀 1941

【c語言】利用kill函式實現乙個程序向另乙個程序傳送訊號

1.用於向任何程序組或程序傳送訊號

#include 

<

signal.h

>

intkill(pid_t pid, 

intsig);

2. 引數:

pid:可能選擇有以下四種

1. pid大於零時,pid是訊號欲送往的程序的標識。

2. pid等於零時,訊號將送往所有與呼叫kill()的那個程序屬同乙個組的程序。

3. pid等於-1時,訊號將送往所有呼叫程序有權給其傳送訊號的程序,除了程序1(init)。

4. pid小於-1時,訊號將送往以-pid為組標識的程序。

sig:準備傳送的訊號**,假如其值為零則沒有任何訊號送出,但是系統會執行錯誤檢查,通常會利用sig值為零來檢驗某個程序是否仍在執行。

返回值說明: 成功執行時,返回0;失敗返回-1

1.  kill_process_01.c 實現等待接收訊號

[cpp]view plain

copy

#include 

#include 

#include 

#include 

char

acprocessname[32];  

void

sig_handler(

intsigno);  

intmain(

intargc, 

char

**argv)  

for(; ;);

//有時間讓我們傳送訊號

return

0;  

}  void

sig_handler(

intsigno)    

2. kill_process_02.c 實現向指定程序號傳送訊號

[cpp]view plain

copy

#include 

#include 

#include 

#include 

char

acprocessname[32];  

intmain(

intargc, 

char

**argv)  

pid = atoi(argv[1]);  

kill(pid, sigusr1);  

printf("[%s] pid = %d\n"

, acprocessname, pid);  

return

0;  

}  

3.  執行結果

[python]view plain

copy

1》 執行./kill_process_01 &   

[./kill_process_01] main is

waiting 

fora signal  

2》 檢視kill_process_01程序號為 

2853

3》 執行./kill_process_02 

2853

[./kill_process_02] pid = 2853

[./kill_process_01] catch the signal sigusr1 10

程序間通訊之使用kill傳送訊號

標頭檔案 include include 定義函式 int kill pid t pid,int sig 說明 系統呼叫kill 用來送引數sig 指定的訊號給引數pid 指定的程序或它的程序組。引數pid 有幾種情況 1 pid 0 將訊號傳給程序識別碼為pid 的程序 2 pid 0 將訊號傳給...

C 使用kill傳送訊號終止目標程序

一 點睛 include includeint kill pid t pid,int sig 函式說明 kill 可以用來送引數sig指定的訊號給引數pid指定的程序。引數pid有幾種情況 引數sig表示準備傳送的訊號 如果其值為零,則沒有任何訊號發出,但是系統會執行錯誤檢查,通常會利用sig值為0...

父程序與子程序間相互傳送訊號

最近想要實現父子程序間的通訊,兩個程序間能 軟中斷 也就是使用signal函式將程序與handler函式繫結。其中的難點在於如何在父程序中獲取子程序的pid,由於實際的程式中,父程序有唯一的子程序,所以我採用的方法是 直接將父程序的 pid 1 也就獲取了子程序的pid,有一絲奇技淫巧的感覺,but...