linux kill()函数的困惑

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

 

 

 

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值