09-发送信号
10.3 发送信号
kill()系统调用,它是我们经常使用的kill工具的基础,kill()调用会从一个进程向另一个进程发送信号:
调用kill(),如果pid值大于0,通常是给pid代表的进程发送信号signo。
如果pid是0,会给调用进程的进程组中的每个进程发送signo信号。
如果pid是-1,signo会向每个调用进程有权限发送信号的进程发出信号,除了调用进程自身和init以外。我们将在下一小节讨论发送信号的权限管理。
如果pid小于-1,会给进程组-pid发送signo信号。
成功时,kill()会返回0。只要有一个信号发出,该调用就认为成功。失败时(没有信号被发送),调用会返回-1,并将errno值设置为下列值之一:
EINVAL
由signo指定的信号无效。
EPERM
调用进程没有权限向指定的进程发送信号。
ESRCH
由pid指定的进程或进程组不存在,或进程是僵尸进程。