信号

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;
}

posted on 2012-04-08 11:45  小风儿_xf  阅读(119)  评论(0编辑  收藏  举报

导航