linux 信号处理实验,linux下信号处理
前言:這一章我們討論一下Linux下的信號處理函數(shù)。
Linux下的信號處理函數(shù):
信號的產(chǎn)生
信號的處理
其它信號函數(shù)
一個實例
1.信號的產(chǎn)生
Linux下的信號可以類比于DOS下的INT或者是Windows下的事件。在有一個信號發(fā)生時候相信的信號就會發(fā)送給相應的進程。在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的輸出結果。 信號事件的發(fā)生有兩個來源:一個是硬件的原因(比如我們按下了鍵盤),一個是軟件的原因(比如我們使用系統(tǒng)函數(shù)或者是命令發(fā)出信號)。 最常用的四個發(fā)出信號的系統(tǒng)函數(shù)是kill, raise, alarm和setitimer函數(shù)。 setitimer函數(shù)我們在計時器的使用 那一章再學習。
#include
#include
#include
int kill(pid_t pid,int sig);
int raise(int sig);
unisigned int alarm(unsigned int seconds);
kill系統(tǒng)調用負責向進程發(fā)送信號sig。
如果pid是正數(shù),那么向信號sig被發(fā)送到進程pid。
如果pid等于0,那么信號sig被發(fā)送到所以和pid進程在同一個進程組的進程
如果pid等于-1,那么信號發(fā)給所有的進程表中的進程,除了最大的哪個進程號。
如果pid由于-1,和0一樣,只是發(fā)送進程組是-pid。
我們用最多的是第一個情況。還記得我們在守護進程那一節(jié)的例子嗎?我們那個時候用這個函數(shù)殺死了父進程守護進程的創(chuàng)建
raise系統(tǒng)調用向自己發(fā)送一個sig信號。我們可以用上面那個函數(shù)來實現(xiàn)這個功能的。
alarm函數(shù)和時間有點關系了,這個函數(shù)可以在seconds秒后向自己發(fā)送一個SIGALRM信號。 下面這個函數(shù)會有什么結果呢?
#includ
總結
以上是生活随笔為你收集整理的linux 信号处理实验,linux下信号处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux uart寄存器读写,Linu
- 下一篇: linux命令行ps1变量_Linux下