如何将信号传递给另一个进程?

时间:2016-05-23 18:48:01

标签: c linux

通过查看信号的语法,我可以看到它不能灵活地将信号传递给另一个pid(pid_t)。进程只能忽略,默认或自定义操作。我们可以将信号传递给另一个过程的可能方式是什么? (我不是在谈论pthreads)。

1 个答案:

答案 0 :(得分:4)

您需要kill(2) system call(而不是kill shell命令):

#include <sys/types.h>
#include <signal.h>

int kill(pid_t pid, int sig);
     

kill()系统调用可用于向任何进程发送任何信号   小组或过程。

     

如果pid为正,则将信号sig发送到具有ID的进程   由pid指定。

     

如果pid等于0,则sig被发送到进程中的每个进程   呼叫过程的一组。

     

如果pid等于-1,则将sig发送到每个进程   调用进程有权发送信号,但进程1除外   (init),但见下文。

     

如果pid小于-1,那么sig将被发送到   ID为-pid的进程组。

     

如果sig为0,则不发送任何信号,但错误检查仍然存在   执行;这可以用于检查进程ID的存在   或处理组ID。

运行man kill会给你kill(1),这是shell命令。要获取系统调用的手册页,请运行man 2 kill