linux 信号处理实验,linux下信号处理
前言:這一章我們討論一下Linux下的信號處理函數。
Linux下的信號處理函數:
信號的產生
信號的處理
其它信號函數
一個實例
1.信號的產生
Linux下的信號可以類比于DOS下的INT或者是Windows下的事件。在有一個信號發生時候相信的信號就會發送給相應的進程。在Linux下的信號有以下幾個。 我們使用 kill -l 命令可以得到以下的輸出結果:
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD
18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN
22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO
30) SIGPWR
關于這些信號的詳細解釋請查看man 7 signal的輸出結果。 信號事件的發生有兩個來源:一個是硬件的原因(比如我們按下了鍵盤),一個是軟件的原因(比如我們使用系統函數或者是命令發出信號)。 最常用的四個發出信號的系統函數是kill, raise, alarm和setitimer函數。 setitimer函數我們在計時器的使用 那一章再學習。
#include
#include
#include
int kill(pid_t pid,int sig);
int raise(int sig);
unisigned int alarm(unsigned int seconds);
kill系統調用負責向進程發送信號sig。
如果pid是正數,那么向信號sig被發送到進程pid。
如果pid等于0,那么信號sig被發送到所以和pid進程在同一個進程組的進程
如果pid等于-1,那么信號發給所有的進程表中的進程,除了最大的哪個進程號。
如果pid由于-1,和0一樣,只是發送進程組是-pid。
我們用最多的是第一個情況。還記得我們在守護進程那一節的例子嗎?我們那個時候用這個函數殺死了父進程守護進程的創建
raise系統調用向自己發送一個sig信號。我們可以用上面那個函數來實現這個功能的。
alarm函數和時間有點關系了,這個函數可以在seconds秒后向自己發送一個SIGALRM信號。 下面這個函數會有什么結果呢?
#includ
總結
以上是生活随笔為你收集整理的linux 信号处理实验,linux下信号处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux uart寄存器读写,Linu
- 下一篇: 职工信息管理软件c语言大一,职工信息管理