kill

kill(传送信号给指定的进程)

相关函数:raise,signal

表头文件:#include <sys/types.h> #include <signal.h>

定义函数:int kill(pid_t pid, int sig);

函数说明:kill()可以用来送参数sig指定的信号给参数pid指定的进程。参数pid有几种情况: pid>0 将信号传给进程识别码为pid的进程。 pid=0 将信号传给和目前进程相同进程组的所有进程 pid=-1 将信号广播传送给系统内所有的进程 pid<0 将信号传给进程组识别码为pid绝对值的所有进程 参数sig代表的信号编号可参考附录D

返回值:执行成功则返回0,如果有错误则返回-1。

错误代码:EINVAL 参数sig不合法 ESRCH 参数pid所指定的进程或进程组不存在 EPERM 权限不够无法传送信号给指定进程

范例:

#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/wait.h>
main()
{
    pid_t pid;
    int status;
    if (!(pid = fork()))
    {
        printf("Hi I am child process!\n");
        sleep(10);
        return;
    }
else
{
    printf("send signal to child process (%d) \n", pid);
    sleep(1);
    kill(pid, SIGABRT);
    wait(&status);
    if (WIFSIGNALED(status)) printf("chile process receive signal %d\n", WTERMSIG(status));
}
}

执行: sen signal to child process(3170) Hi I am child process! child process receive signal 6