程序运行出现段错误!
时间:2010-06-25
来源:互联网
- #include<stdio.h>
- #include<unistd.h>
- #include<stdlib.h>
- #include<signal.h>
- #include<setjmp.h>
- jmp_buf env;
- void sig_handler(int signo)
- {
- if(signo==SIGALRM)
- {
- printf("the progress wake up!\n");
- longjmp(env,1);
- }
- }
- int main()
- {
- int i;
- if(signal(SIGALRM,sig_handler)==SIG_ERR)
- {
- printf("signal error");
- exit(0);
- }
- printf("check signal progress......\n");
- alarm(6);
- system("ls -al > myhost.txt");
- system("cat myhost.txt");
- printf("\n");
- sleep(2);
- printf("enter into sleep at once!\n");
- sleep(10);
- printf("sleep time is over!\n");
- setjmp(env);
- for(i=0;i<3;i++)
- printf("welcome back\n");
- return(0);
- }

作者: shaohui973 发布时间: 2010-06-25
- 24. alarm(6);
- 32. setjmp(env);
这时候会运行你的信号处理函数,并调用longjmp函数。
但是在这之前,setjmp并没有被调用过,所以env变量没有初始化(或者说有效的设置)。
所以你的longjmp报了SIGSEGV
作者: star1983653 发布时间: 2010-06-25
楼上正解!
作者: tiwowo 发布时间: 2010-06-25
2楼正解
作者: RobinKQin 发布时间: 2010-06-25
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28