请教关于apue上的一段代码

发布于 2022-07-18 09:49:42 字数 815 浏览 16 评论 2

代码是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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

胡大本事 2022-07-25 19:27:42

还是不大懂,不过还是感谢你的回复
哎,硬是感觉信号这一章好难啊,后面几个函数都不大清楚怎么回事,不知道是实在太菜了,还是翻译的文字不好理解,有没有些好的讲信号的资料

浮萍、无处依 2022-07-24 23:56:49

我的意思是代码中只有一个if(setjmp==0)而没有if(setjmp!=0)。那么longjmp返回到哪里去了,

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文