2016-05-23 73 views
-2

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

+2

'男人杀死'回答你的问题吗? – SergeyA

+0

也添加我排除使用shell命令传递信号或使用exec进行查杀过程或发送信号的选项 – theartist33

+0

@SergeyA我只是提到,在我上面的评论中,没有寻找kill命令 – theartist33

回答

4

您希望kill(2) system call(不是kill外壳命令):

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

int kill(pid_t pid, int sig); 

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

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

如果pid等于0,则将sig发送到调用进程的进程组 中的每个进程。

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

如果pid小于-1,则将sig发送给进程组中的每个进程,其ID为-pid。

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

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