Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7723804
  • 博文数量: 961
  • 博客积分: 15795
  • 博客等级: 上将
  • 技术积分: 16612
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 14:23
文章分类

全部博文(961)

文章存档

2016年(1)

2015年(61)

2014年(41)

2013年(51)

2012年(235)

2011年(391)

2010年(181)

分类: LINUX

2011-06-17 21:19:47

  1. /*
  2.  *    利用kill给子进程发送信号
  3.  *    Lzy    2011-6-14
  4.  */

  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <wait.h>
  8. #include <sys/signal.h>

  9. void sig_handler(int sig)            //信号处理函数
  10. {
  11.     if(sig == SIGINT)
  12.         printf("Receive sig SIGINT\n");
  13. }

  14. int main(void)
  15. {
  16.     pid_t pid;

  17.     pid = fork();                //创建子进程
  18.     if(pid == 0)
  19.     {
  20.         signal(SIGINT, sig_handler);        //指定信号处理函数
  21.         sleep(3);
  22.     }
  23.     else if(pid > 0)
  24.     {
  25.         kill(pid, SIGINT);                    //给子进程发送信号
  26.         wait(NULL);                            //等待任一子进程线束
  27.     }

  28.     return 0;
  29. }
  1. /*
  2.  *    发送信号给当前进程
  3.  *    Lzy    2011-6-14
  4.  */

  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <wait.h>
  8. #include <sys/signal.h>

  9. void sig_handler(int sig)            //信号处理函数
  10. {
  11.     if(sig == SIGINT)
  12.         printf("Receive sig SIGINT\n");
  13. }

  14. int main(void)
  15. {    
  16.     signal(SIGINT, sig_handler);        //指定信号处理函数        
  17.     raise(SIGINT);                    //发送信号给自己    
  18.     return 0;
  19. }
  1. /*
  2.  *    挂起进程至到接收到一个信号
  3.  *    父进程等待子进程发送信号
  4.  *    Lzy    2011-6-14
  5.  */

  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <wait.h>
  9. #include <sys/signal.h>

  10. void sig_handler(int sig)            //信号处理函数
  11. {
  12.     if(sig == SIGINT)
  13.         printf("Receive sig SIGINT\n");
  14. }

  15. int main(void)
  16. {    
  17.     pid_t pid;

  18.     pid = fork();                //创建子进程
  19.     if(pid == 0)
  20.     {
  21.         sleep(3);                            //让父进程先运行
  22.         kill(getppid(), SIGINT);                    //给父进程发送信号        
  23.     }
  24.     else if(pid > 0)
  25.     {
  26.         signal(SIGINT, sig_handler);        //指定信号处理函数    
  27.         pause();                            //挂起                
  28.     }
  29.     
  30.     return 0;
  31. }
阅读(1188) | 评论(0) | 转发(2) |
0

上一篇:信号量

下一篇:exec

给主人留下些什么吧!~~