Linux进程通讯之kill(int pid, int sign)系统调用函数

区别于kill的本意杀死,  在进程管理里面,kill确实是杀死进程的命令。

但是在进程通讯里面,kill(xx, xx)这个系统调用函数是当前进程向其他进程发送信号的功能。

定义声明在 #include 头文件里

int kill(int pid, int sign);

 

参数:

pid:可能选择有以下四种

 

pid的取值 所代表的意义
pid>0 将此信号发送给进程ID为pid的进程
pid==0 将此信号发送给进程组ID和该进程相同的进程
pid<0 将此信号发送给进程组内进程ID为pid的进程
pd==-1 将此信号发送给系统所有的进程

返回值说明:

成功执行时,返回0;失败返回-1。errno被设为以下的某个值EINVAL:指定的信号码无效(参数sig不合法);EPERM:权限不够无法传送信号给指定进程;ESRCH:参数pid所指定进程或进程组不存在。

void kill_child(int x) {
    printf("Parent process caught signal %d.\n", x);
    kill(pid1, SIGUSR1);
    kill(pid2, SIGUSR2);
    wait(0); wait(0);
    printf("Parent process is killed.\n");
    exit(0);
}

其中pid1和pid2是当前进程(父进程)调用fork()函数生成的子进程的pid。

Linux的系统调用函数可以参考IBM的一篇开发者文章

https://www.ibm.com/developerworks/cn/linux/kernel/syscall/part1/appendix.html#8

Linux进程通讯之kill(int pid, int sign)系统调用函数_第1张图片

你可能感兴趣的:(Linux,系统,服务器管理)