linux C之alarm()
来源:互联网 发布:菜鸟网络加盟怎么赚钱 编辑:程序博客网 时间:2024/05/18 21:49
参考网络资料,仅作学习。
说明:
alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。
若参数seconds为0,则之前设置的闹钟会被取消,并将剩下的时间返回。
一个进程只能有一个闹钟时间,如果在调用alarm之前已经设置过闹钟时间,则任何以前的闹钟时间都会被新值所代替。
头文件:
#include <unistd.h>
函数原型:
unsigned int alarm(unsigned int seconds);
函数返回值:
成功:如果调用此alarm前,进程已经设置了闹钟,则返回上一个闹钟剩下的时间,否则返回0;
失败:-1
范例一 单一闹钟:
#include <stdlib.h>#include <stdio.h>#include <unistd.h>#include <signal.h>#define SLEEP_TIME 6int time_out = 0;void handler(){ printf("Wake up!\n");time_out = 1;}int main(){ int i; signal(SIGALRM, handler); //让内核做好准备,一旦接受到SIGALARM信号,就执行 handler alarm(SLEEP_TIME);//设置闹钟,准备睡觉 printf("Alarm setted!\n"); for(i = 1;!time_out; i++) { printf("sleep %d ...\n",i); sleep(1); } return 0;}
运行结果:
$ ./access
Alarm setted!
sleep 1 ...
sleep 2 ...
sleep 3 ...
sleep 4 ...
sleep 5 ...
sleep 6 ...
Wake up!
范例二 多个闹钟:
#include <stdlib.h>#include <stdio.h>#include <unistd.h>#include <signal.h>#define SLEEP_TIME 6int time_out = 0;void handler(){ printf("Wake up!\n");time_out = 1;}int main(){ int i; signal(SIGALRM, handler); printf("Alarm 1 setted! Ret is %d\n",alarm(SLEEP_TIME)); sleep(2);printf("Alarm 2 setted! Ret is %d\n",alarm(SLEEP_TIME));for(i = 1;!time_out; i++) { printf("sleep %d ...\n",i); sleep(1); } return 0;}
运行结果:
$ ./access
Alarm 1 setted! Ret is 0
Alarm 2 setted! Ret is 4
sleep 1 ...
sleep 2 ...
sleep 3 ...
sleep 4 ...
sleep 5 ...
sleep 6 ...
sleep 7 ...
Wake up!
范例三 第二闹钟设置为0
#include <stdlib.h>#include <stdio.h>#include <unistd.h>#include <signal.h>#define SLEEP_TIME 6int time_out = 0;void handler(){ printf("Wake up!\n");time_out = 1;}int main(){ int i; signal(SIGALRM, handler); printf("Alarm 1 setted! Ret is %d\n",alarm(SLEEP_TIME)); sleep(2);printf("Alarm 2 setted! Ret is %d\n",alarm(0));for(i = 1;!time_out; i++) { printf("sleep %d ...\n",i); sleep(1); } return 0;}
运行结果:闹钟被取消,handler不会被执行。
$ ./access
Alarm 1 setted! Ret is 0
Alarm 2 setted! Ret is 4
sleep 1 ...
sleep 2 ...
sleep 3 ...
sleep 4 ...
sleep 5 ...
sleep 6 ...
sleep 7 ...
sleep 8 ...
sleep 9 ...
sleep 10 ...
sleep 11 ...
sleep 12 ...
sleep 13 ...
sleep 14 ...
sleep 15 ...
......
- linux C之alarm()
- linux C之alarm函数
- linux C之alarm函数
- linux C之alarm函数
- linux C之alarm函数(更改)
- linux C之alarm函数(更改)
- linux定时器之alarm
- linux c之alarm函数的使用,定时器的实现
- linux c alarm(0)的含义
- 小记——linux定时器之alarm
- Linux c 中alarm,signal,pause的使用说明
- [Linux C编程]信号发送捕捉kill() raise() alarm() pause()
- Linux进程之alarm()信号传送闹钟函数
- linux信号处理之signal、sigaction、alarm、pause函数
- linux进程间通信方式之定时器信号alarm
- C alarm实例
- linux alarm定时设置
- Linux alarm闹钟函数
- Android系统属性SystemProperties…
- ListView总结
- 函数的重载及数组的简介
- ContentProvider 原理分析
- Android待机流程分析
- linux C之alarm()
- USACO/kimbits 3.2.2
- Android的RIL驱动模块 telephony启动流程
- UIImageView上面放UIButton不响应事件
- Java API 帮助文档中英文版下载
- Android学习资料
- Java反射机制获取系统@Hide属性【…
- Git详解之九 Git内部原理
- 如何取消标题栏