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 传入到程序中,再执行该测试代码之前,需要运行先一个用于接收此信号的进程.