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