当前位置:  技术问答>linux和unix

紧急求助:关于线程中接收alarm信号的问题

    来源: 互联网  发布时间:2016-03-16

    本文导语:  下面的程序在只用一个线程的程序中正常运行,可当把这段程序放到一个新开的线程中时,就不能运行,一直阻塞在sigtimedwait函数处,不能接收到alarm的信号,就连把tv的值设为{1,0}时也不能返回。这是什么原因呢?...

下面的程序在只用一个线程的程序中正常运行,可当把这段程序放到一个新开的线程中时,就不能运行,一直阻塞在sigtimedwait函数处,不能接收到alarm的信号,就连把tv的值设为{1,0}时也不能返回。这是什么原因呢?难道sigtimedwait函数不能在新线程中运行吗?请高人指点一下。。

      sigset_t wait_set;
     int sig_no;
     const struct timespec tv = {20,0};
     siginfo_t sig_info ;
 
     sigemptyset(&wait_set);
     sigaddset(&wait_set, SIGALRM);

     sigprocmask(SIG_BLOCK, &wait_set, NULL);
    while(1)
    {
     alarm(1);
     sig_no=sigtimedwait(&wait_set,&sig_info,&tv);
     printf("I am here!");
     fflush(0);
    }

|
NOTES
       In normal usage, the calling program blocks the signals in set via a  prior
       call  to  sigprocmask()  (so that the default disposition for these signals
       does not occur if they are delivered between successive calls  to  sigwait-
       info()  or  sigtimedwait())  and does not establish handlers for these sig-
       nals.  In a multithreaded program, the signal  should  be  blocked  in  all
       threads  to  prevent  the signal being delivered to a thread other than the
       one calling sigwaitinfo() or sigtimedwait()).

       POSIX leaves the meaning of a NULL value for the timeout argument  of  sig-
       timedwait()  unspecified, permitting the possibility that this has the same
       meaning as a call to sigwaitinfo(), and indeed this  is  what  is  done  on
       Linux.

在多线程的程序里,你需要在别的线程中将信号屏蔽,否则该信号有可能被别的线程捕获,而不是被你希望的线程捕获。

    
 
 

您可能感兴趣的文章:

  • 紧急求助java多线程编程!!!!!!!!!!!!!
  • 求助,线程的回收
  • socket实现多文件并发传输,求助多线程实现问题?
  • 求助Linux下怎样查看线程状态?
  • 线程内部的errno问题求助
  • Opengl Linux多线程 求助
  • 求助多线程问题
  • 求助:Linux下线程编程的问题~~~~~~~~~~~~~~~~~~~`
  • 求助:关于单线程recv时的超时问题
  • 求助!Linux下socket编程,服务端与多线程的问题
  • ■■求助■■ 如何查看一个进程拥有的线程数量???
  • 【求助】在主线程里如何终止子线程的执行?
  • 求助!Linux多线程问题
  • 求助!!!多线程+多个epoll_wait问题
  • 求助!pthread与Win32 API线程库的对应问题
  • 【求助】如何使运行中的线程挂起?
  • 求助linux下socket多线程编程的例子(C语言写的)
  • (100分求助)用内核线程对用户进程操作(大侠/虾们出手了)
  • 求助!关于多线程下数据库操作的问题,请大家帮忙看看
  • MM求助:怎样多线程下载http://java.sun.com上的东东? 用http方式,谢谢了.
  • 求助:UDP编程,无法接收广播数据包
  • 紧急求助!/root/.bash_profile被改写之后,如何让系统接收新的配置?
  • 求助,udp文件传输发送端发送完了,接收端却接受到一半就bad address?
  • 求助!!!linux tcp发送 xp tcp接收 出现的问题
  • 无线网卡如果指定接收了一个AP发出的信号(通过指定ESSID),能同时接受到另一个AP发出的信号么?50分求助
  • udp接收并存储怎么做?速度大约能到多少?疯了,求助!!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求助一些关于信号量的问题
  • 【求助】多进程中 内核信号量无效?
  • 求助:信号 --13 进程中断
  • 【求助】linux/Unix下创建子进程,向父进程发送信号,子进程也能收到改信号,此时如何让子进程不收到信号
  • *** 求助!!! 关于(可靠)信号处理的问题 ***
  • [求助]如何让阻塞的信号量、recvfrom退出?
  • 【求助】多进程中 内核信号量无效? iis7站长之家
  • 想在LINUX下读取802.11网卡的信号强弱信息,以作为切换的依据,有做过的么?50分求助
  • 在线求助!关于如何使用“信号”的方式来响应键盘按下的消息!在线急盼回复!
  • 求助啊~ 关于信号的。。。。。。。。。
  • 求助:linux信号处理的默认函数宏定义怎么理解呢?
  • 求助sigaction中sa_mask设置阻塞信号的问题!!!
  • 求助:linux 用户态 线程同步中信号量、互斥量、锁之间的区别?
  • 还是有一个信号的问题等待求助
  • 高分求助高分求助高分求助高分求助高分求助高分求助
  • 怎样读取HZK24S前十区的内容啊???求助求助
  • 紧急求助!紧急求助!
  • 【求助】iplanet问题,求助高手解答!
  • 菜鸟求助,solaris下计算问题求助
  • 【求助】SOS紧急求助..............极为简单的问题...跪求....
  • 高分求助啊!求助SUSE 10.0 不能上网.
  • 急急急急急急急啊,紧急求助啊!!!!!满分求助啊!!!!!!
  • 求助:linux下 vim的配置(高分求助)
  • red hat怎么安装gcc啊!总是出错,求助求助啊!!!yum源怎么改啊!!
  • 求助~~求助 ~~linux文件读写问题
  • 求助,安装了红帽子后进不了
  • 新装linux求助
  • linux的 iptables问题求助
  • (高分求助)请问,那里有软件开发的<设计文档>
  • 一个简单的问题,高分求助!!!
  • 紧急求助:Unix下给文件夹重命名用什么命令?谢谢!!!!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3