免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1639 | 回复: 1
打印 上一主题 下一主题

3个程序题目关于signal和thread的 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-09-03 22:10 |只看该作者 |倒序浏览
下面是我写的3个程序关于signal和线程的。如果向他们发送kill SIGINT信号的话大家能不能不执行程序就说出结果呢?


  1. #include <pthread.h>
  2. #include <signal.h>
  3. #include <unistd.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>

  6. void sigint(int signo);
  7. void * thr_fn(void *arg)
  8. {
  9.     int err, signo;
  10.     sigset_t mask,oldmask;
  11.     for (;;)
  12. }                                                                                                                 
  13.                                                                                                                   
  14. void sigint(int signo){                                                                                                                                                                                                
  15.         printf("We are in hadler\n");
  16. }                                                                                                                 
  17.                                                                                                                   
  18. int main(void)
  19. {                                                                                                                 
  20.     int         err;
  21.     sigset_t    oldmask;
  22.     pthread_t   tid;
  23.     sigset_t    mask;
  24.     signal(SIGINT,sigit);
  25.     sigemptyset(&mask);
  26.     sigaddset(&mask, SIGINT);
  27.     pthread_sigmask(SIG_BLOCK, &mask, &oldmask);
  28.     err = pthread_create(&tid, NULL, thr_fn, 0);
  29.     for(;;);                                                                                                      
  30. }  
复制代码


  1. #include <pthread.h>
  2. #include <signal.h>
  3. #include <unistd.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. void sigint(int signo);
  7. void * thr_fn(void *arg)
  8. {
  9.     int err, signo;
  10.     sigset_t mask,oldmask;
  11.     sigemptyset(&mask);
  12.     sigaddset(&mask, SIGINT);
  13.     pthread_sigmask(SIG_BLOCK, &mask, &oldmask);   
  14.         for (;;);
  15. }   

  16. void sigint(int signo){
  17.         printf("We are in hadler\n");
  18. }   
  19.    
  20. int main(void)
  21. {
  22.     int         err;
  23.     sigset_t    oldmask;
  24.     pthread_t   tid;
  25.     sigset_t    mask;
  26.     signal(SIGINT,sigint);
  27.     pthread_create(&tid, NULL, thr_fn, 0);
  28.     for(;;);                                                                                                      
  29. }
复制代码

  1. #include <pthread.h>
  2. #include <signal.h>
  3. #include <unistd.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. void sigint(int signo);
  7. void * thr_fn(void *arg)
  8. {
  9.     int err, signo;

  10.     for (;;) {

  11.         sigwait(&mask, &signo);
  12.         switch (signo) {
  13.         case SIGINT:
  14.             printf("\ninterrupt\n");
  15.             break;
  16.         default:
  17.             printf("unexpected signal %d\n", signo);
  18.             exit(1);
  19.         }
  20.     }
  21. }

  22. void sigint(int signo){

  23.         printf("We are in hadler\n");
  24. }

  25. int main(void)
  26. {
  27.     int         err;
  28.     sigset_t    oldmask;
  29.     pthread_t   tid;
  30.     sigset_t    mask;
  31.     signal(SIGINT,sigint);
  32.     sigemptyset(&mask);
  33.    sigaddset(&mask, SIGINT);
  34.    pthread_sigmask(SIG_BLOCK, &mask, &oldmask);
  35.    pthread_create(&tid, NULL, thr_fn, 0);
  36.     for(;;);                                                                                                      
  37. }
复制代码

BTW:
这些都是平台无关的,所以只要posix兼容的都应改一样。

欢迎排砖。砖头是我提高的动力~~
^_^

[ 本帖最后由 nuclearweapon 于 2006-9-3 22:51 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-09-03 22:23 |只看该作者
受不了
怎么贴出来是这个样子。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP