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

哪位高手可以解释一下为什么Linux下的socket函数recv(),不被信号中断掉?

    来源: 互联网  发布时间:2015-01-08

    本文导语:  Linux下用recv()接收数据时,产生了一个信号并被捕获,但信号处理完后recv()仍在阻塞,这是怎么回事? 据我所知(也许才疏学浅,知道得并不正确),recv()应该立即返回,并设errno为EINTR,我试了SIGALRM、SIGUSR1信号结果...

Linux下用recv()接收数据时,产生了一个信号并被捕获,但信号处理完后recv()仍在阻塞,这是怎么回事?
据我所知(也许才疏学浅,知道得并不正确),recv()应该立即返回,并设errno为EINTR,我试了SIGALRM、SIGUSR1信号结果都是recv()没有被中断,但在HP操作系统上,recv()是被中断了,而且recv()的帮助中也是说收到信号会中断调用,这是怎么回事?
哪位高手可以解释一下?

|
有一些系统默认设置是重新调用(并非不被中断),请参考如下代码(UNIX网络编程5.6):
#include "some.h"
Sigfunc *
signal(int signo,Sigfucn *fucn)
{
  struct sigaction act,oact;
  act.sa_handler = func;
  sigemptyset(act.sa_mask);
  act.sa_flags=0;
  if (signo==SIGALRM){
#ifdef SA_INTERRUPT
     act.sa_flags |= SA_INTERRUPT;   /*SunOS 4.x */
#endif
     }else{
#ifdef SA_RESTART
       act.sa_flags |=SA_RESTART;
#endif
     }
  sigaction(signo,&act,&oact);
  return(oact.sa_handler);
}
(有修改)
简单的说,通过sigaction结构中的sa_mask可以设置开关。

|
如果系统调用是自动再启动的,则当SIGALRM信号处理程序返回时,recv函数并不被中止

|
就这样
signal(SIGUSR1,SIG_IGN);         
signal(SIGVTALRM,SIG_IGN);
signal(SIGPIPE,SIG_IGN);

|
帮你up一下吧

    
 
 

您可能感兴趣的文章:

  • 高手帮帮忙!vi中如何实现跳转到任意结构体或函数的声明处,包括系统库中声明的函数和数据结构?
  • 高手指点,关于库函数的问题,着急啊
  • NOSQL iis7站长之家
  • 关于linux内核的ioctl函数,请高手指点一下
  • 请问高手,如何用linux操作系统里的标准c函数获取bios时间,高分!!!!
  • 小弟请教各位高手,在JAVA中通过什么函数能获得Button的标签内容?
  • linux下time函数问题请教高手
  • 请那位高手详细解释一下wait函数的用法和意义?
  • 高手帮解答:数学基本库函数的源码问题.请你吃烤鸭
  • Linux编程 怎么调用另一个文件中的函数 求高手指点!!!
  • 高手请进:请问用response.sendRedirect()函数传递的中文参数如何正确识别?
  • 关于select函数,请高手指教。在线等 分不够加!!
  • 关于backtrace 函数,请高手指点
  • 不是高手的也知道,关于时间的库函数,帮帮我,谢谢了
  • 关于select函数,请高手指教。在线等 分不够加!!
  • awk调用函数的问题,请高手帮忙解答
  • 写了个简单的回调函数,望高手指点
  • 求高手解答,程序在main函数退出之后core了!
  • 各位高手:java是不是不支持缺省参数。为什么我在写一个类的构造函数时,加入缺省参数出现错误。
  • 关于stdio.h中的函数,请高手帮忙!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请高手指教 linux 信号处理问题
  • 内核发送信号给进程的问题,高手来拿分了
  • 为什么进程总是不停的收到SIGTTOU信号,请高手指点
  • 急求高手帮忙解决,在linux下qt串口编程的信号发射问题
  • [请教内核高手]内核在何处处理接收到的信号
  • 关于Linux信号捕捉的问题,哪位高手帮我看看,谢谢。
  • 求高手给点思路——信号量问题
  • 求高手,关于信号量和共享内存的...
  • 不显示删除回复显示所有回复显示星级回复显示得分回复 父子进程间通信:1:共享内存2:信号量:父进程里请求信号量错误,高手帮忙
  • 用信号量同步出错,请教高手。。。
  • 高手,高手,高高手请进!
  • 有熟悉EXIM的高手高手么??
  • to 高手:学java应该怎样一步步学习,从菜鸟到高手.
  • 高分请高手,高手定能解决
  • 请问高手在linux中用什么命令可以做linux的启动盘???在等待高手??
  • 有高手研究Agent++麽?里面有个thread.h,蛮难读的,请高手指点
  • 难道高手区里的人就是高手?
  • 在dos下用bc31挑战高手******开发mssql程序,连接时报link err:undefined symbol GETNOTE in module DBEXTERN?(挑战高手)
  • 真正的linux高手,请看过来,看你符合高手标准不?
  • 难道这没有高手吗?难道这没有乐于助人的高手?(高分酬谢62+50+50)
  • 关于我对linux高手用yum,非高手用源码的理由
  • 高手救命,很急——ORACLE817安装在UNIXWARE711上,手工启动数据库后在netasst中连接错误,高手帮我看看?
  • 请教高手lvs的奇怪问题,我挺着急,希望高手别潜水,就就我,先谢谢了
  • 各个高手看看这个问题!本人第一次学习java所以要各位高手的帮助。。
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 我是新手,高手,高手,快来救我
  • EJB问题,请教高手(非高手莫进)
  • 请各位JAVA高手,网业高手看过来,我把能给的分都送出!!!只能给37分,哎!!
  • eWEEK沙龙征集高手座谈


  • 站内导航:


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

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

    浙ICP备11055608号-3