Linux系统编程——alarm函数

alarm函数

  • 函数原型:unsigned int alarm(unsigned int seconds);
  • 函数描述:设置定时器(闹钟)。在指定seconds后,内核会给当前进程发送14)SIGALRM信号。进程收到该信号,默认动作终止。每个进程都有且只有唯一的一个定时器。
  • 函数返回值:返回0或剩余的秒数,无失败。例如:
  • 常用操作:取消定时器alarm(0),返回旧闹钟余下秒数。
    alarm使用的是自然定时法,与进程状态无关,就绪、运行、挂起(阻塞、暂停)、终止、僵尸…无论进程处于何种状态,alarm都计时。
RETURN VALUE
       alarm() returns the number of seconds remaining until any  previously  scheduled  alarm
       was due to be delivered, or zero if there was no previously scheduled alarm.

alarm()返回任何先前计划的报警前剩余的秒数,如果没有事先安排的警报,则为零。

在这里插入图片描述
执行结果
在这里插入图片描述
第一次调用返回0,失败返回非0值。所以第一个n等于0。第二次调用,返回上一次调用的剩余秒数。睡觉了两秒,所以剩余秒数为5-2=3秒。第三次调用,返回上一次调用的剩余秒数。因为中间没有睡眠,估计返回2秒。最后,因为传参为0,取消定时器,所以不会发送SIGALRM信号,所以sighandler函数不会执行。

难点

难点在于,理解两次调用这个函数时,返回值的不同意思。第一次调用,如果调用成功,函数的返回是0。第二次调用,返回任何先前计划的报警前剩余的秒数

信号处理函数

//信号处理函数
void sighandler(int signo)
{
	printf("signo==[%d]\n", signo);
}

总结

alarm:
1 每一个进程都只有一个时钟
2 alarm函数的返回值: 0 或者是上一个alarm剩余的秒数
3 alarm(0): 取消定时器
4 alarm函数发送的是SIGALRM信号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值