linux alarm函数使用

unsigned int alarm(unsigned int seconds)
函数作用:在seconds秒之后向调用alarm()的进程发送一个SIGALRM信号。
1.如果指定seconds是0,表示取消正在等待的alarm,如果在等待时间结束之前有其它事件到来,alarm也将被取消。
2.对于一个进程而言,只有最近的依次alarm()调用是有效的。alarm()的返回值是上次alarm()调用剩余的时间。
alarm()函数经常与 signal(int signum, sighandler_t handler)函数一起使用,通过signal()函数可以指定受到该信号后的动作。
signum是要处理的信号类型
handler是一个函数指针,指向接到信号后的相应动作
linux所有的事件类型可以通过kill -l命令查看所有的信号类型的宏定义
通过man signal和man alarm可分别查看函数的帮助文档
多次alarm()调用示例:
#include<unistd.h>
#include<stdio.h>
int main(){
	alarm(8);
	printf("alarm seconds is 8\n");
	sleep(3);
	int remain = alarm(6);
	printf("first alarm remain time is %d\n", remain);
	printf("new alarm seconds is 6\n");
	pause();
}

alarm()与signal()配合示例:
#include<unistd.h>
#include<signal.h>
#include<stdio.h>
void handler(){
	printf("handler invoked!\n");
}
int main(){
	printf("main begin\n");
	signal(SIGALRM, handler);
	alarm(2);
	pause();
	printf("main end\n");
}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值