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

关于Linux信号捕捉的问题,哪位高手帮我看看,谢谢。

    来源: 互联网  发布时间:2016-11-26

    本文导语:  执行结果为: [root@localhost heiying]# ./a.out  receive signal 14 [root@localhost heiying]#  问题: 虽然捕捉到了SIGALRM这个信号,但是程序还是被这个型号 终止了(2秒之后),要如何修改程序才能让这个程序的sleep(1000)的到执...

执行结果为:
[root@localhost heiying]# ./a.out 
receive signal 14
[root@localhost heiying]# 


问题:
虽然捕捉到了SIGALRM这个信号,但是程序还是被这个型号
终止了(2秒之后),要如何修改程序才能让这个程序的sleep(1000)的到执行呢 ?????????????

原文件:
#include 
#include 
#include 
#include 
#include 
#include 
#include 

void new_op(int signum, siginfo_t *info, void *myact)
{
printf("receive signal %dn",signum);
}

int main()
{
int sig=SIGALRM;
struct sigaction act;
alarm(2);  //闹钟:2秒后发送SIGALRM信号,如果不捕捉,则系统的默认动作时终止该进程。
act.sa_flags=SA_SIGINFO;
         act.sa_sigaction=new_op;
sigaction(sig,&act,NULL);
sleep(1000);
return 0;
}





|
int main()
{
int sig=SIGALRM;
struct sigaction act;
alarm(2); //闹钟:2秒后发送SIGALRM信号,如果不捕捉,则系统的默认动作时终止该进程。
act.sa_flags=SA_SIGINFO;
  act.sa_sigaction=new_op;
sigaction(sig,&act,NULL);
sleep(1000);
其实你的程序不是被SIGALRM终止的,是由于return 0正常终止的,这个你可以通过shell命令上面查看进程的终止原因。至于原因:sleep(1000)收到信号后会从内核态返回,执行信号句柄后继续向后执行,而你可能认为sleep(1000)要睡1000s后才会向后继续执行
return 0;
}

|
对,sleep(1000)被ALRM信号中断了,从而执行最后的return,程序结束。

你可以判断sleep()的返回值,如果>0,表示剩余的待睡眠的秒数,可以继续sleep

int n;
do
{
n = sleep(1000);
}
while( n > 0 );

    
 
 

您可能感兴趣的文章:

  • linux系统下怎么捕捉不到键盘事件
  • linux下如何做摄像头的图像捕捉!
  • 请问那些linux信号是不能捕捉的?
  • linux下开发mpeg4视频播放捕捉程序使用什么库?参与有分。
  • linux 信号捕捉和处理的问题~~~在线等
  • Linux下如何捕捉鼠标事件
  • 学习linux的新手问:linux进程信号掩码以及信号阻塞与信号未决怎么理解?
  • linux 中信号量的使用 当信号初始化的时候设置的值大于1将是如何?
  • 【求助】linux/Unix下创建子进程,向父进程发送信号,子进程也能收到改信号,此时如何让子进程不收到信号
  • Linux下的信号忽略和信号阻塞是什么意思
  • 请高手指教 linux 信号处理问题
  • linux 信号中断
  • linux 信号 按什么键能发SIGCONT 信号??
  • linux的信号处理函数中如何访问共享资源
  • linux中 关于 进程和信号的问题
  • 如何使用命令行删除Linux下的POSIX有名信号灯
  • linux 下多线程 每个线程能否使用alarm来处理,信号是否会乱呢?
  • 关于linux内核中信号处理的问题?(信号处理的时间)
  • linux多线程信号问题
  • linux下面的信号都已经是"可靠信号"了吗,已经没有了不可靠信号?
  • linux 只有SIGUSR1和SIGUSR2,如果有多个应用程序需要信号,怎么办?
  • 在linux下怎么使用信号量?
  • 关于Linux下的信号量
  • Linux,aix,windows下可以查询非本进程的信号处理函数吗?
  • linux 下信号机制问题
  • linux信号处理程序
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 我们知道内核源代码文件都放在/linux下,但目录/linux的绝对路径是啥?谢谢!
  • 想使用Kliyx把Delphi写的代码编译为Linux程序, 装什么Linux什么版本最好?请明人指教,谢谢!?
  • 菜鸟问题:怎样创建一个对所有文件只有只读权限的linux帐号,谢谢!
  • 请大虾推荐Linux内核,驱动等方面的好书!谢谢
  • linux里面的所有头文件,有没有整理过的,发一份,谢谢!!!
  • 求linux C++的时间相关函数及用法,急用,谢谢
  • 谁能说说Linux的类库啊?(谢谢了,^_^)
  • 想好好学linux操作系统,请大家帮忙推荐本入门的好书,谢谢
  • 想装个linux,先弄白几个问题。谢谢!
  • 哪位高人能够向我推荐一本如何学习linux编程的书籍,谢谢!
  • 怎么装linux最省钱啊??谢谢大虾指教!!
  • 小弟刚刚准备接触LINUX,达人们进来啊谢谢了哦
  • 在Linux下有没有,象"金山词霸"那样的,翻译软件...急需,谢谢
  • 请推荐一本学习Linux的好书,谢谢!
  • 怎么写linux和windows2000的架构区别!我要作业!谢谢
  • 请问Linux显示当前版本的命令是什么?谢谢
  • 请问哪里有LINUX下的 Acrobat下啊,要支持中文才行.谢谢
  • 才学Linux下的开发,请大家帮帮忙(谢谢了)
  • Linux拨号上网的问题,谢谢!
  • linux内核里面的所有头文件,有没有整理过的,请高手指点!谢谢!!!
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载


  • 站内导航:


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

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

    浙ICP备11055608号-3