请教关于apue上的一段代码
代码是216页的,如下
#include <setjmp.h>
#include <signal.h>
#include <unistd.h>
static jmp_buf env_alrm;
static void sig_alrm(int signo)
{
longjmp(ev_alrm,1);
}
unsigned int sleep2(unsigned int nsecs)
{
if(signal(SIGALRM,sig_alrm)==SIG_ERR)
return (nsecs);
if(setjmp(env_alrm)==0){
alarm(nsecs);
pause();
}
return(alarm(0));
}
书上写,直接调用,setjmp为0,从longjmp返回则为非0,这个是什么意思,如果为0,那么此时setjmp为0,那个longjmp是怎么用的?
另外书上好多位置写:
^? 键如中断字符
^ 产生信号一次
这几个是怎么输入ctrl+?和ctrl+,我试了,好象不是?
望解答,3Q
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
还是不大懂,不过还是感谢你的回复
哎,硬是感觉信号这一章好难啊,后面几个函数都不大清楚怎么回事,不知道是实在太菜了,还是翻译的文字不好理解,有没有些好的讲信号的资料
我的意思是代码中只有一个if(setjmp==0)而没有if(setjmp!=0)。那么longjmp返回到哪里去了,