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

求大神分析一段Linux进程的小代码

    来源: 互联网  发布时间:2017-05-02

    本文导语:  看第一次输入  ,感觉定时器已经打破了pause函数造成的挂起状态,然而为啥一下子输出 “Would you want to quit? alarm!alarm!       //①  Would you want to quit?” 然后五秒后又出现定时信号的处理信息:alarm!alarm! ①处的,那...

看第一次输入
求大神分析一段Linux进程的小代码[图片] ,感觉定时器已经打破了pause函数造成的挂起状态,然而为啥一下子输出
“Would you want to quit? alarm!alarm!       //①
 Would you want to quit?”
然后五秒后又出现定时信号的处理信息:alarm!alarm!
①处的,那个getchar(),根本没有接受字符啊!! 而且为何那三句是同时出现!!!

#include
#include
#include
#include
#include
void  handle(int signal)
{
switch(signal)
{
   case SIGALRM:
    printf("alarm! alarm! aaaaaaan");break;
    case SIGABRT:
    printf("inabnormally quit!n");break;
    case SIGINT:
    printf("Catch Signal : %dn",signal);break;
}
}

int main()
{
printf("Current process ID is: %dn",getpid());
signal(SIGINT,handle);
signal(SIGALRM,handle);
signal(SIGABRT,handle);
int time=5;
while(1)
{
alarm(time);
printf("would want to quit ?");
if(getchar()=='y') abort();
else pause();
};
return 0;
}

|
明确两点:
1.标准输出默认是有缓冲的;
2.信号处理函数要调用异步信号安全函数(Async-signal-safe functions),哪些函数是async-signal-safe的,可参考man 7 singal里的描述。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 大神们好! yum install gcc出现错误,请大神指点!
  • 求助~~哪位大神晓得如何固定tuxedo客户端与通信端的端口呀?
  • 请教各位大神 linux安装的步骤!
  • [FreeBSD] 大神,求解,control socket : can‘t to any socket
  • 一个很简单的liunx的问题。。。希望大神给个指点
  • 我的D盘不见了。。求大神。。。
  • 用U盘装红帽9,怎么装 ?求大神!!!!
  • ubuntu kde,神奇的输入法问题,求解,求大神显灵
  • 求大神赐教 关于brctl
  • 哪位大神给解释一下repo init和git chone的区别
  • 大神们帮我看看这个死机的原因
  • 急!跪求大神赐教。fedora16 grub文件丢失
  • 求助 crontab -l & crontab -e 报错,谢各位大神先~~
  • 菜鸟求大神指导?
  • Java做Web开发,想学习下Linux,不知用什么版本的好,望各位大神们指点
  • 求大神详细讲解下KDbg的使用方法
  • linux装载刚编译2.6.38.8内核,错误了, 那个大神帮帮小白
  • 在VMware中安装Fedora中出现错误mount:special device /dev/hda does not exist,求大神解决
  • 关于postfix的问题,求大神进来看下
  • 初学linux程序设计,有个程序找不到思路,跪求大神指点!


  • 站内导航:


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

    ©2012-2021,