程式在執行時,系統所傳來的指示。(你在家呆著有人來敲門)
linux下常見訊號
通過kill -l 可檢視所有的訊號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
signal
捕捉訊號並作出指定反應
1.原函式
示例#include typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);
使用ctrl+c無法使程式終止
使用ctrl+z退出程式或使用ps -aux|grep 執行檔名,查詢程序號後使用kill -9 程序號 終止#include
#include
void
handler
(int signum)
intmain()
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
read.c#include
#include
#include
#include
#include
intmain
(int argc,
char
**ar**)
執行效果#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...