kill()函數
#include <sys/types.h>
#include <signal.h>
int kill(pid_t pid, int sig);
?函數參數和返回值含義如下:
????????pid:參數 pid 為正數的情況下,用于指定接收此信號的進程 pid;除此之外,參數 pid 也可設置為 0 或-1 以及小于-1 等不同值,稍后給說明。
????????sig:參數 sig 指定需要發送的信號,也可設置為 0,如果參數 sig 設置為 0 則表示不發送信號,但任執行錯誤檢查,這通常可用于檢查參數 pid 指定的進程是否存在。
返回值:成功返回 0;失敗將返回-1,并設置 errno。
參數 pid 不同取值含義:
如果 pid 為正,則信號 sig 將發送到 pid 指定的進程。
如果 pid 等于 0,則將 sig 發送到當前進程的進程組中的每個進程。
如果 pid 等于-1,則將 sig 發送到當前進程有權發送信號的每個進程,但進程 1(init)除外。
如果 pid 小于-1,則將 sig 發送到 ID 為-pid 的進程組中的每個進程。
代碼示例:
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<sys/types.h>
#include<signal.h>int main(int argc , char *argv[])
{int pid;/*判斷傳參個數*/if ( 2 > argc ){/* code */exit(-1);/*將傳入的字符串轉化為整形數字*/pid = atoi(argv[1]);printf("pid:%d\n",pid);/*向pid的指定進程發送信號*/if (-1 == kill(pid,SIGINT)){/* code */perror("kill error");exit(-1);}}exit(0);
}
以上代碼通過 kill()函數向指定進程發送 SIGINT 信號,可通過外部傳參將接收信號的進程 pid 傳入到程序中,再執行該測試代碼之前,需要運行先一個用于接收此信號的進程.
?