訊號的傳送 接收 處理函式

2021-10-07 21:07:43 字數 2809 閱讀 8358

訊號的傳送函式:

kill函式:傳送訊號給任意程序

標頭檔案: #include

#include

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

引數:pid: 正數,要接收訊號的程序號;

0,訊號被傳送到與pid程序相同的程序組中;

-1,訊號傳送給所有的程序表中的程序

sig: 訊號

返回: 成功0,錯誤-1

例:kill(pid,9);

raise函式:只能傳送給當前程序,等於kill(getpid(),sig)

標頭檔案: #include

#include

函式原型: int raise(int sig)

引數: sig,訊號

返回: 成功0,錯誤-1

例:raise(sigtstp);

函式alarm:鬧鐘訊號傳送,預設終止當前程序

標頭檔案: #include

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

引數: seconds,指定秒數

返回值: 成功:如果呼叫此次alarm前,程序已經有鬧鐘時間,則返回上乙個鬧鐘時間的剩餘時間,否則0;

出錯-1

例:alarm(9);

alarm函式與raise函式比較:

相同點:讓核心傳送訊號到當前程序

不同點:alarm只會傳送sigalarm訊號;alarm會讓核心定時一段時間後傳送訊號,raise會讓核心立刻傳送訊號。

訊號的接收函式:

函式pause:程序接收,一直睡著,程序狀態為s

標頭檔案: #include

原型: int pause(void)

返回值: 成功0,出錯-1

例:pause();

函式sleep:睡眠一段時間,狀態s

標頭檔案:#include

原型:unsigned int sleep(unsigned int seconds);

返回值:剩餘秒數

例:sleep(1);

函式while(1):使程序一直在執行(r狀態)

訊號的處理函式:

signal函式:註冊訊號處理函式

標頭檔案: #include

函式原型: void (*signal(int signum, void (*handler)(int)))(int)

引數:signum:指定訊號

handler:訊號處理函式

sig_ign:忽略該訊號

sig_dfl:採用系統預設的處理方式

自定義訊號處理函式指標

返回: 成功:設定之前的訊號處理方式,函式指標;出錯-1

例:signal(14,function);

注:多次設定程序的處理方式時,程序會使用最新的處理方式。

#include

"stdio.h"

#include

"sys/types.h"

#include

"signal.h"

#include

"stdio.h"

#include

"stdlib.h"

void

myfun

(int signum)

return;}

void

myfun1

(int signum)

intmain()

}if(pid ==0)

return0;

}

執行結果:

parent process things,i=

0parent process things,i=

1parent process things,i=

2parent process things,i=

3parent process things,i=

4parent process things,i=

5parent process things,i=

6parent process things,i=

7parent process things,i=

8parent process things,i=

9receive signum=

10,i=

0receive signum=

10,i=

1receive signum=

10,i=

2receive signum=

10,i=

3receive signum=

10,i=

4parent process things,i=

10parent process things,i=

11parent process things,i=

12parent process things,i=

13parent process things,i=

14receive signum=

17parent process things,i=

15parent process things,i=

16parent process things,i=

17

linux c 程序間訊號的傳送與接收

訊號不僅可以用於事件的非同步處理,同時也可以用作資料傳輸,一者用於接收資料的程序需要安裝訊號處理函式,專門用於接收訊號,二者用於給指定的程序傳送訊號 傳送訊號的程序是 main.cpp created on jul 15,2014 author john include include includ...

雷達系統接收端訊號處理

雷達系統接收端建模 典型的雷達系統接收端訊號處理流程如圖1所示。訊號被接收機收到後,一般會依次通過匹配濾波 脈衝壓縮 動目標顯示 mti 動目標檢測 mtd 恆虛警率檢測 cfar 模組。經過這樣的處理,可以對目標回波與各種干擾以及雜訊的混疊訊號進行有效的加工處理,最大程度的剔除無用訊號。在一定條件...

訊號 訊號處理函式(捕捉)

要明白訊號處理函式的使用,就要先知道訊號的捕捉設定,什麼時候會呼叫訊號處理函式和其執行的流程是什麼,下圖完整的展示了訊號捕捉的設定,以及訊號處理函式的觸發機制 所以,從上圖可以知道,只有當程式中斷,異常或系統呼叫,才會進入核心態,也只有進入了核心態才能處理訊號,在這裡初學者常常有乙個誤區,他們會覺得...