社区
Linux/Unix社区
帖子详情
用alarm和pause来实现sleep:分不够可在加
yutongjun108
2003-01-14 10:02:54
请用系统调用alarm和pause来实现函数sleep(seconds)
...全文
94
4
打赏
收藏
用alarm和pause来实现sleep:分不够可在加
请用系统调用alarm和pause来实现函数sleep(seconds)
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cwhh
2003-01-14
打赏
举报
回复
void sig_alarm(int signal)
{
return;
}
void sleep2(int seconds)
{
signal(SIGALRM,sig_alarm);
alarm(seconds);
while(pause()==-1&&errno=EINTR) return;
}
ari
2003-01-14
打赏
举报
回复
执行非本地跳转。简单的讲就是跨函数goto
在这里的功能是避免在pause调用之前捕捉到信号,
从而将程序陷入pause
具体用法可以
参阅unix/linux 手册.
============================
man setjmp
man longjmp
salaciouswolf
2003-01-14
打赏
举报
回复
ari(薛定锷) :
薛大虾,能不能解释一下setjmp和longjmp的功能,以及在此程序中的作用?
谢谢了,我是菜鸟,别见笑!
ari
2003-01-14
打赏
举报
回复
static jmp_buf jmpbuf;
#define JMPVAL 1
static
void sig_alarm(ing signo)
{
longjmp( jmpbuf, JMPVAL );
return;
}
void sleep3( int seconds )
{
int jmpval=0;
signale( SIGALRM, sig_alarm );
alarm(seconds);
jmpval = setjmp( jmpbuf );
if( jmpval == 0 )
pause();
else
return;
}
alarm
,signal
实现
sleep
功能
alarm
,signal
实现
sleep
功能
linux 下
实现
sleep
详解及简单实例
linux 下
实现
sleep
详解及简单实例
sleep
: 普通版本 1、基本设计思路: 1>注册SIGALRM信号的处理函数; 2>调用
alarm
(nsecs)设定闹钟; 3>调⽤
pause
等待,内核切换到别的进程运行; 4>nsecs秒之后,闹钟超时,内核发SIGALRM给这个进程 ; 5>从内核态返回这个进程的⽤户态之前处理未决信号,发现有SIGALRM信号,其处理函数是sig_alrm; 6> 切换到用户态执行sig_alrm函数,进⼊sig_alrm函数时SIGALRM信号被⾃动屏蔽,从sig_alrm函数返回SIGALRM信 号⾃动解除屏蔽。然后
C语言中的
pause
()函数和
alarm
()函数以及
sleep
()函数
主要介绍了C语言中的
pause
()函数和
alarm
()函数以及
sleep
()函数,是C语言入门学习中的基础知识,需要的朋友可以参考下
信号处理函数解析,signal ,
sleep
,raise等等函数的使用
信号处理函数解析,signal ,
sleep
,raise等等函数的使用
C_函数(标注版).pdf相关函数 signal,
sleep
表头文件 #include 定义函数 unsigned int
alarm
(unsigned int seconds);
相关函数 signal,
sleep
表头文件 #include 定义函数 unsigned int
alarm
(unsigned int seconds); 函数说明
alarm
()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。如果参数 seconds 为0,则之前设置的闹钟会被取消,并将剩下的时间返回。 返回值 返回之前闹钟的剩余秒数,如果之前未设闹钟则返回0。 范例 #include
Linux/Unix社区
23,217
社区成员
74,540
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章