现在的位置: 首页 > 综合 > 正文

linux kill()函数的困惑

2013年10月11日 ⁄ 综合 ⁄ 共 799字 ⁄ 字号 评论关闭

linux kill(int pid,int signo)                          

其中kill 要杀死pid ,为什么必须要signo > 0 ,signo 发给谁,谁来接收,有什么用处

 

已经解决:

kill只是用来向指定进程发送signo信号,并不杀死进程,不同与shell命令kill,测试代码:

父进程调用kill 向子进程发送信号16,17,子进程结收到后调用对应处理函数

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

void sigchild(int signo)
{
    printf("sigchild/n");
}

void hello(int sig)
{
    printf("hello/n");
}

int  main()
{
    pid_t p1, p2;

    while((p1 = fork()) == -1);

i   f(p1 > 0)
{
    while((p2 = fork()) == -1);
    if(p2 == 0)
    {
        signal(17, hello);
        for(;;);                 //此处主要是防止信号还没到了,进程已经结束!
    }
    else
    {
        printf("Parent process a/n");
        kill(p1,16);
        kill(p2,17);
        
    }
}
else
{
    printf("Child process b/n");
    signal(16, sigchild);
    
}
for(;;);   //此处也是为了防止信号还没到,进程就结束了

}

运行结果:

[wpy@localhost ~]$ ./testKill
Child process b
Parent process a
hello
sigchild

 

 

 

 

抱歉!评论已关闭.