运行程序,分析程序执行结果。

#include<unistd.h>

#include<signal.h>

#include<stdio.h>

void handler() {

printf("Hello\n");

signal(SIGALRM,handler);

alarm(5);

}

main()

{  int i;

handler();

for(i=1;i<21;i++){   printf("sleep %d ...\n",i);  sleep(1);  }

}

若将alarm()的参数值改为10,观察输出结果有何变化。

分析:此处alarm()括号内的参数值为10,则在执行完语句 alarm(10)后,定时器开启,每隔10s给调用其的进程发送一个SIGALARM信号。这里已将信号到来的动作修改为函数handler(),所以每当定时器到时间时,都会执行一次handler()函数:输出 hello,并再次开启定时器。

下面我们将程序做出些许修改,并观察运行结果。

很容易发现,运行结果与之前没修改程序前一致,那么这是因为什么呢?在此,我将signal()函数放在了主函数开始处,当执行完主函数的第一条语句后,SIGALARM动作就被重新定义了。如此一来,每间隔10s,函数handler()就要执行一次。

alarm()函数详解:

Linux定时器alarm()用法讲解相关推荐

  1. Linux定时器crontab用法

    初识定时器 在Linux终端通过crontab -e命令,向文件中写入*/1 * * * * /home/ysl/tmp/SendMail.py(crontab表达式),即添加了一项每1分钟执行1次的 ...

  2. linux alarm定时器,Linux 定时器alarm()(转)

    系统中的每个进程都有一个私有的闹钟.这个闹钟很像一个计时器,可以设置在一定秒数后闹钟.时间一到,时钟就发送一个信号SIGALRM到进程. 函数原型:unsigned int alarm(unsigne ...

  3. linux文件权限umask,linux系统中UMASK权限的用法讲解

    原标题:linux系统中UMASK权限的用法讲解 umask一般是用在你初始创建一个目录或者文件的时候赋予他们的权限. 这里要说明两点: 1.针对目录来说x权限代表可以进入该目录,所以说对于这个权限初 ...

  4. Linux定时器接口

    Linux定时器接口主要分为三类: 一. sleep(), unsleep, alarm(),引用了SIGALARM信号,在多线程中使用信号又是相当麻烦的. 二. nanosleep(), clock ...

  5. Linux操作系统下进程讲解(史上最强总结)

    Linux操作系统下进程讲解 一.进程的基本概念: 1. 什么是进程 在传统的操作系统中,程序不可以独立的运行,作为资源分配和独立运行的基本单位都是进程.进程的定义是一个可执行中程序的实例,系统中每一 ...

  6. linux signal用法,Linux 信号 signal 用法详解及注意事项

    Linux 信号 signal 用法详解及注意事项 1) SIGHUP 本信号在用户终端连接 (正常或非正常) 结束时发出, 通常是在终端的控 制进程结束时, 通知同一 session 内的各个作业, ...

  7. Linux下wine用法

    Linux下wine用法 下面是wine的使用方法. 一.要在Linux下运行,wine是必不可少的,所以,请将wine安装到你的系统里. 二.将你的Windows所在的分区加载到某个目录.(本文假定 ...

  8. linux md5sum 的用法(转)

    MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改.MD5全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度 ...

  9. linux上的定时器上的jiffies,linux定时器和Jiffies汇.doc

    linux定时器和Jiffies汇 1.linux HZ Linux核心几个重要跟时间有关的名词或变数,将介绍HZ.tick与jiffies. HZ Linux核心每隔固定周期会发出timer int ...

最新文章

  1. 列名无效怎么解决_PowerQuery批量合并Excel,前面有空行且不相等的解决办法
  2. 人工智能产业趋势和机遇!
  3. 神经网络知识专题总结!
  4. java之==和equals区别
  5. 具有缺失值的多元时间序列的递归神经网络
  6. 《统计学习方法》读书笔记(1)---学习的要素
  7. 自动化html定位,Selenium自动化定位方法
  8. 线段 LibreOJ - 10007(贪心)
  9. 如何使create-react-app与Node Back-end API一起使用
  10. Taro+react开发(86):资源文件处理
  11. git-版本的回退操作与
  12. WPF Grid布局
  13. 薰衣草紫色调人像lr/ps/luts预设
  14. linux更改文件系统格式,只安装Linux系统,把硬盘全部格式化成Linux文件系统
  15. R语言ggplot2可视化时间序列柱形图:通过双色渐变配色颜色主题可视化时间序列柱形图
  16. QQ网页登陆密码加密方式(农场、空间、WebQQ等通用)(网摘)
  17. Required view 'XXX' with ID XXX for field 'xxx' was not found
  18. Ubuntu操作系统的安装
  19. js html 乱码
  20. SSL数字证书之CA根证书、CA中间证书和SSL证书

热门文章

  1. MTK平台Metadata的加载(4)—Q版本后
  2. canvans——合并图片
  3. 解决:The ‘Access-Control-Allow-Origin‘ header contains___Nginx跨域设置
  4. C++ 使用海康威视SDK将视频推流到rtmp服务器
  5. web端与移动端高德地图接入及实例化
  6. 网络代理服务器的设计与实现
  7. 批量将 PDF 转为 ePub 格式文档
  8. Tensorflow小白实战系列
  9. WIN10管理员权限设置、更改用户名被“拒绝访问”
  10. VSCode配置 for Mac(一)C++