信号
1:
#include<stdio.h>
#include<stdlib.h>
#include<signal.h>
void f(int reg)
{
printf("the signal handle!\n");
}
int main()
{
signal(SIGINT, f);//注册一个信号,接收到时进入处理函数f
pause();
return 0;
}
2:
#include<stdio.h>
#include<stdlib.h>
#include<signal.h>
#include<sys/types.h>
#include<sys/wait.h>
pid_t t;
void m(int reg)
{
kill(t, SIGUSR1); //给子进程发一个信号
}
void f(int reg)
{
printf("the signal handle!\n");
}
int main()
{
t = fork();
if(t == 0){//child
signal(SIGINT, SIG_IGN);//忽略一下将会给父进程的信号,免得被挂掉了
signal(SIGUSR1, f);//接收父进程发过来得信号,然后进入处理函数f
pause();
exit(0);
}else{//parent
signal(SIGINT, m);//注册一个信号,接收时去处理函数m
pause();
waitpid(t, NULL, 0);
printf("the parent\n");
}
return 0;
}