Posted on 2008-08-21 19:30
Prayer 閱讀(441)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
LINUX/UNIX/AIX
1. 函數(shù)說(shuō)明:
kill和raise是用來(lái)發(fā)送信號(hào)的:
kill把信號(hào)發(fā)送給進(jìn)程或進(jìn)程組;
raise把信號(hào)發(fā)送給(進(jìn)程)自身.
他們的原型如下:
#include <signal.h>
int kill(pid_t pid, int signo);
int raise(int signo);
成功則返回0, 出錯(cuò)則返回-1
從原型上可以看出, raise函數(shù)是可以通過(guò)kill實(shí)現(xiàn)的.
raise(signo);
等價(jià)于:
kill(getpid(), signo);
2. pid參數(shù):
kill函數(shù)中的pid參數(shù), 它有以下4種情況:
- pid > 0: 將該信號(hào)發(fā)送給進(jìn)程ID為pid的進(jìn)程.
- pid == 0: 將該信號(hào)發(fā)送給與發(fā)送進(jìn)程屬于同一進(jìn)程組的所有進(jìn)程(不包括內(nèi)核進(jìn)程和init進(jìn)程). 此時(shí), 發(fā)送進(jìn)程必須具有向這些進(jìn)程發(fā)送信號(hào)的權(quán)限.
- pid < 0: 將該信號(hào)發(fā)給其進(jìn)程組ID等于pid絕對(duì)值的所有進(jìn)程(不包括內(nèi)核進(jìn)程和init進(jìn)程). 此時(shí), 發(fā)送進(jìn)程必須具有向這些進(jìn)程發(fā)送信號(hào)的權(quán)限.
- pid == -1: 將該信號(hào)發(fā)送給發(fā)送進(jìn)程有權(quán)限向它們發(fā)送信號(hào)的系統(tǒng)上的所有進(jìn)程.(不包括內(nèi)核進(jìn)程和init進(jìn)程).
3. signo參數(shù):
POSIX.1將編號(hào)為0的信號(hào)定義為空信號(hào). 如果signo參數(shù)是0, 則kill仍執(zhí)行正常的錯(cuò)誤檢查, 但不發(fā)送信號(hào). 這被用來(lái)確定一個(gè)進(jìn)程是否存在.