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