http://blog.sina.com.cn/s/blog_6a1837e90100uhl3.html

alarm也称为闹钟函数,alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。如果参数seconds为0,则之前设置的闹钟会被取消,并将剩下的时间返回。要注意的是,一个进程只能有一个闹钟时间,如果在调用alarm之前已设置过闹钟时间,则任何以前的闹钟时间都被新值所代替。

所需头文件
  #include<unistd.h>

函数原型
  unsigned int alarm(unsigned int seconds)

函数参数
  seconds:指定秒数

函数返回值
  成功:如果调用此alarm()前,进程已经设置了闹钟时间,则返回上一个闹钟时间的剩余时间,否则返回0。
  出错:-1

代码

#include<unistd.h>
#include<signal.h>
void handler()

{
    printf("Hello\n");
    signal(SIGALRM, handler); //让内核做好准备,一旦接受到SIGALARM信号,就执行 handler
    alarm(5);
}

void main()
{
    int i;
    handler();
    for(i=1;i<21;i++)

{
        printf("sleep %d ...\n",i);
        sleep(1);
    }
}

结果:刚开始在main中执行一次,然后每隔5秒执行一次handler()

Hello
sleep 1 ...
sleep 2 ...
sleep 3 ...
sleep 4 ...
sleep 5 ...
Hello
sleep 6 ...
sleep 7 ...
sleep 8 ...
sleep 9 ...
sleep 10 ...
Hello
sleep 11 ...
sleep 12 ...
sleep 13 ...
sleep 14 ...
sleep 15 ...
Hello
sleep 16 ...
sleep 17 ...
sleep 18 ...
sleep 19 ...
sleep 20 ...
Hello

注意:alarm只设定一个闹钟,时间到达并执行其注册函数之后,闹钟便失效。如果想循环设置闹钟,需在其注册函数中在调用alarm函数。

好了,看看我自己改编后的代码吧!有助于更好得理解

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <signal.h>#define SLEEP_TIME 6int time_out;void handler()
{printf("Wake up!\n");time_out = 1;
}int main()
{int i;signal(SIGALRM, handler); //让内核做好准备,一旦接受到SIGALARM信号,就执行 handleralarm(SLEEP_TIME);//设置闹钟,准备睡觉printf("Set alarm!\n");for(i = 1;i < 2 * SLEEP_TIME && !time_out; i++){printf("sleep %d ...\n",i);sleep(1);
/*        if (i == SLEEP_TIME / 2)*/
/*        {*/
/*          printf("Turn off the alarm!\n");//我中途醒了,不需要闹钟,把闹钟关闭*/
/*          alarm(0);*/
/*        }*/}return 0;
}

linux C之alarm函数(更改)相关推荐

  1. Linux系统编程——alarm函数

    alarm函数 函数原型:unsigned int alarm(unsigned int seconds); 函数描述:设置定时器(闹钟).在指定seconds后,内核会给当前进程发送14)SIGAL ...

  2. linux内核alarm,linux C之alarm函数

    alarm也称为闹钟函数,alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程.如果参数seconds为0,则之前设置的闹钟会被取消,并将剩下的时间返回.要注意 ...

  3. linux alarm函数使用

    unsigned int alarm(unsigned int seconds) 函数作用:在seconds秒之后向调用alarm()的进程发送一个SIGALRM信号. 1.如果指定seconds是0 ...

  4. linux内核alarm,linux中alarm函数的实例讲解

    linux alarm函数简介 上代码: #include #include #include #include int main(int argc, char *argv[]) { alarm(5) ...

  5. linux c语言sleep函数的头文件,C语言中的pause()函数和alarm()函数以及sleep()函数

    C语言pause()函数:让进程暂停直到信号出现头文件: #include 定义函数: int pause(void); 函数说明:pause()会令目前的进程暂停(进入睡眠状态), 直到被信号(si ...

  6. linux之alarm函数

    1. alarm函数 [cpp] view plain copy [1] 引用头文件:#include <unistd.h>; [2] 函数标准式:unsigned int alarm(u ...

  7. Linux操作系统下信号处理函数

    Linux系统下的信号 一.信号概念 1. 什么是信号 信号是软件中断,信号提供了一种异步处理事件的方法,它允许进程和内核中断其他进程.一个信号就是一条消息,它通知进程系统发生了一个某种类型的事件,在 ...

  8. linux c语言内核函数手册,Linux C函数实例速查手册

    函数学习目录: 第1章 初级I/O函数 1.1 close函数:关闭已经打开的文件 1.2 creat函数:创建一个文件 1.3 dup函数:复制文件描述符 1.4 dup2函数:复制文件描述符到指定 ...

  9. linux编程下signal()函数

    首先说明函数指针的定义形式:      <存储类型> 数据类型 (* 函数指针名) (参数表):     其中存储类型一般不写,用默认形式.可以选auto型.static型和extern型 ...

最新文章

  1. IOSUIcontrol事件
  2. 黑裙安装linux环境,Linux学习笔记(一) ---- 安装Linux系统
  3. proxmox超融合集群用户授权
  4. mysql buffer pool_MySQL的查询缓存和Buffer Pool
  5. windows 10家庭版关闭Defender
  6. python 3.7.3 thinker_GitHub - thinkerwalker/python3-bin
  7. Vue简单封装axios—解决post请求后端接收不到参数问题
  8. SpringMvc+Tomcat+Angular4 部署运行
  9. php 生存分析,HPA数据库08.做生存分析
  10. MsChart控件在VC++中的使用(VS2013+MFC+对话框)
  11. 软件项目开发成本估算方法
  12. ​元宇宙与AI热度不减,Gartner 2023 年十大战略技术趋势完整解析
  13. 熔断器 java_SpringCloud之熔断器Hystrix的实现
  14. Nginx:配置 proxy_pass 代理转发
  15. 国家标准GB7713-87
  16. 点集拓扑学的历史介绍
  17. 2022年12月10日作业
  18. k8s每天报告服务器状态信息,[工作随笔] 配置 cron 检查 K8s Pod 存活状态以推送钉钉消息...
  19. 跳棋游戏利用树构建合法路径出现循环的解决办法
  20. springcloud项目读取本地文件失败

热门文章

  1. 硬盘分区那点事儿(MBR和GPT)
  2. 什么是死锁,如何避免死锁?
  3. SMPL源码实现及相关问题
  4. Unity(一)入门:Unity Hub下载 Unity安装
  5. sse——字符串数组
  6. pyrouge和rouge在Linux上的安装方法以及结果比较
  7. Unity3DCPU优化方法相关理论知识
  8. WINDOWS下kill进程的命令
  9. 内连接(join、inner join )、左连接(left join) 、全连接(full join)
  10. python基础------文件读写操作、re、os和sys模块