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