Linux多进程14-alarm函数
#include <unistd.h>
unsigned int alarm(unsigned int seconds);
- 功能: 设置定时器, 函数调用后开始倒计时, 当倒计时为0时,
函数会给当前进程发送一个信号:SIGALARM
- 参数:
seconds: 倒计时的时长, 单位:秒.
- 如果参数为0, 定时器无效(不进行倒计时, 不发信号)
- alarm(0); 取消一个定时器
- 返回值:
- 之前没定时器, 返回0
- 之前有定时器, 返回之前的定时器剩余的时间
- SIGALARM: 默认终止当前的进程, 每一个进程都有且只有唯一的一个定时器
alarm(10); //返回0
过了1秒
alarm(5); //返回上一个定时器剩余时间:9
alarm(100); //该函数不阻塞
示例代码
#include <unistd.h>
#include <stdio.h>
int main(int argc, char const *argv[])
{
int seconds = alarm(5);
printf("seconds = %d\n", seconds); //0
sleep(2);
seconds = alarm(2);
printf("seconds = %d\n", seconds); //3
//10s 结束后, 程序会给当前进程发送SIGALARM信号, 程序终止, 不会死循环
while (1)
{
}
return 0;
}
运行
$./alarm
seconds = 0
seconds = 3
闹钟
案例: 计算机一秒钟能数多少个数
// 1s 电脑能数多少个数
#include <stdio.h>
#include <unistd.h>
int main(int argc, char const *argv[])
{
alarm(1);
int i = 0;
while (1)
{
printf("%i\n", i++);
}
return 0;
}
使用重定向到文件节省IO
$./alarmC >> alarmC.txt
闹钟