Linux訊號相關函式示例

2021-10-08 20:43:53 字數 3012 閱讀 8372

程式在執行時,系統所傳來的指示。(你在家呆著有人來敲門)

linux下常見訊號

1

) sighup 2

) sigint 3

) sigquit 4

) sigill 5

) sigtrap

6) sigabrt 7

) sigbus 8

) sigfpe 9

) sigkill 10

) sigusr1

11) sigse** 12

) sigusr2 13

) sigpipe 14

) sigalrm 15

) sigterm

16) sigstkflt 17

) sigchld 18

) sigcont 19

) sigstop 20

) sigtstp

21) sigttin 22

) sigttou 23

) sigurg 24

) sigxcpu 25

) sigxfsz

26) si**talrm 27

) sigprof 28

) sigwinch 29

) sigio 30

) sigpwr

31) sigsys 34

) sigrtmin 35

) sigrtmin+136

) sigrtmin+237

) sigrtmin+338

) sigrtmin+439

) sigrtmin+540

) sigrtmin+641

) sigrtmin+742

) sigrtmin+843

) sigrtmin+944

) sigrtmin+

1045

) sigrtmin+

1146

) sigrtmin+

1247

) sigrtmin+

1348

) sigrtmin+

1449

) sigrtmin+

1550

) sigrtmax-

1451

) sigrtmax-

1352

) sigrtmax-

1253

) sigrtmax-

1154

) sigrtmax-

1055

) sigrtmax-956

) sigrtmax-857

) sigrtmax-758

) sigrtmax-659

) sigrtmax-560

) sigrtmax-461

) sigrtmax-362

) sigrtmax-263

) sigrtmax-164

) sigrtmax

通過kill -l 可檢視所有的訊號

signal

捕捉訊號並作出指定反應

1.原函式

#include typedef void (*sighandler_t)(int);

sighandler_t signal(int signum, sighandler_t handler);

示例

使用ctrl+c無法使程式終止

#include

#include

void

handler

(int signum)

intmain()

使用ctrl+z退出程式或使用ps -aux|grep 執行檔名,查詢程序號後使用kill -9 程序號 終止

sigaction

接收訊號函式

原函式

#include int sigaction(int signum, const struct sigaction *act,struct sigaction *oldact);

其中const struct sigaction預設如下

struct sigaction ;
在這其中siginfo_t 結構體預設如下

siginfo_t
其中handler初始參量如下

void

handler(int sig, siginfo_t *info, void *ucontext)

示例見最後

sigqueue

傳送訊號函式

原函式

#include int sigqueue(pid_t pid, int sig, const union si**al value);

其中const union si**al結構體預設如下

union si**al ;
示例見最後

write.c

#include

#include

#include

#include

#include

intmain

(int argc,

char

**ar**)

read.c

#include

#include

void

handler

(int signum,siginfo_t *info,

void

*context)

}int

main()

執行效果

執行write.c後等待接受訊號,read.c將訊號和值傳遞過來後打出傳遞過來的值

linux 訊號相關函式 一

訊號共性 簡單 不能攜帶大量資訊 滿足條件才傳送 訊號的特質 訊號是軟體層面的 中斷。一旦訊號產生,無論程式執行到什麼位置,必須停止執行,處理訊號,處理結束,再繼續執行後續指令。所有訊號的產生及處理都是 由 核心完成的。產生訊號 1.按鍵產生 如 ctrl c 2.系統呼叫產生 如 kill 3.軟...

Linux訊號集相關函式操作

在linux的程序中可以接收到各種的訊號,並且如果你不對訊號進行處理,linux中的程序就會採用預設的處理方式處理,比如ctrl c的訊號,程序對它的處理就是終止程序的執行。在linux中,我們也可以在程序中遮蔽掉某些訊號,使程序不去處理這些訊號,但其中的sigkill和sigstop是不能被阻塞的...

訊號相關函式彙總

1.函式說明 kill 和raise 是用來傳送訊號的 kill 把訊號傳送給程序或程序組 它不僅可以中止程序,也可以向程序傳送其他訊號 raise 把訊號傳送給 程序 自身.它們的原型如下 include include int kill pid t pid,指明要傳送的訊號程序號 int sig...