Alarm 函数|学习笔记

简介: 快速学习 Alarm 函数

开发者学堂课程【物联网开发- Linux 高级程序设计全套视频Alarm 函数 】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/660/detail/11009


Alarm 函数  

 

alarm 函数

kill 函数可以发信号,alarm 函数也可以发信号

#include

unsigned int alarm(unsigned int seconds) ;

alarm 函数参数是一个无符号整型,返回值也是一个无符号整型的

功能:

在 seconds 秒后,向调用进程发送一个 SIGALRM 信号,SIGALRM 信号的默认动作是终止调用 alarm 函数的进程。

alarm就是定时自杀。

返回值:

若以前没有设置过定时器,或设置的定时器已超时,返回0;否则返回定时器剩余的秒数,并重新设定定时器。

相当于定时炸弹,定好时是5秒后刚经过2秒又调了一次alarm重新去定时,返回值就是第二次alarm返回值就是3还剩3秒重新定时,只有一个闹钟。

例:02_ alarm.c

#include

#include

int main( int argc,  char *argv[])

{

int seconds = 0;

seconds = alarm(5);

printf(" seconds = %d\n",seconds);

sleep(2);

seconds = alarm(5);

printf(" seconds = %d\n",seconds);

while(1);

return.0;

}

alarm 例子效果:

#include

#include

Int main ( int argc,  char  *argv[])

{

int seconds = 0;

seconds = alarm(5) ;

Printf ("seconds = %d\n",  seconds);

sleep(2);

seconds = alarm(5) ;

printf (" seconds = %d\n",  seconds) ;

while(1) ;

return 0 ;

}

第一个变量第一次定时 alarm 倒计时5秒因为没有定时器也没有定过时,第一次返回值为0,然后倒计时5秒刚过2秒又去 alarm 重新设定闹钟,第二次 alarm 的时候上一个闹钟还剩3秒所以第二个 second 是3,接下来 while 一循环,5秒之后会收到一个信号进程结束,相当于这个闹钟被重新设定。

3是返回值,是上一个闹钟还剩3秒,5秒钟之后收到信号,相当于一个闹钟被设了两次,第一次设好倒计时5刚过2秒就重新被倒计时,倒计时5秒到了之后收到一个信号当前进程。

转为UTF-8无BOM编码格式:

[02_day]gcc alarm.c -o alarm

[02_day]clear

[02_day]./alarm

seconds = 0(2秒钟之后返回3)

seconds = 3(5秒钟之后进程结束)

闹钟

[02_day]

alarm倒计时多少秒给当前进程发送一个 alarm 信号

注意转为UTF-8无BOM编码格式中的“闹钟”两字

当前进程收到一个信号就结束,它的父进程可以收到子进程的退出状态,知道子进程./运行的进程是因为收到 alarm 信号退出的,所以就打了一个“闹钟”。

注意:

使用 kill 函数发送信号,接收信号进程和发送信号进程的所有者必须相同,或者发送信号进程的所有者是超级用户。

相关文章
|
监控 Java 应用服务中间件
SpringCloud高级篇 - 微服务保护-1
SpringCloud高级篇 - 微服务保护-1
309 0
|
2月前
|
Web App开发 存储 人工智能
蹭上150k Star的热点,从clawdbot学会了给AI加自动记忆!
本文介绍老金基于OpenClaw项目提炼的“三层记忆系统”:知识图谱(背景档案)、每日笔记(任务记忆)、隐性知识(经验积累),配合Hooks自动触发,实现AI复利智能——越用越懂你。普通人可复刻,显著提升周报、PPT、邮件等日常AI使用效率。(239字)
|
8月前
|
监控 前端开发 JavaScript
如何开发一套工程项目部管理系统?(附架构图+流程图+代码参考)
工程项目部管理系统通过信息化手段整合进度、资源、人员、财务及风险管理,提升项目执行效率与决策质量。系统涵盖功能设计、业务流程、开发技巧及实现效果,助力企业构建高效、低风险的管理平台,实现项目全流程监控与优化。
|
8月前
|
机器学习/深度学习 传感器 算法
基于栅格地图的无人机三维路径规划算法研究(Matlab代码实现)
基于栅格地图的无人机三维路径规划算法研究(Matlab代码实现)
253 1
|
8月前
|
C# 图形学 开发者
【Unity3D实例-功能-移动】角色行走和奔跑的相互切换
本文介绍了如何在Unity中实现角色行走与奔跑的切换功能,涵盖动画器创建、动画设置、角色移动代码编写及测试运行,帮助开发者提升角色移动的灵活性与操作体验。
308 0
|
12月前
|
存储 缓存 关系型数据库
开发体育直播系统后台权限设计实践分享|ThinkPHP 技术栈落地案例
本文分享了一套体育直播源码,基于 **ThinkPHP + MySQL** 技术栈构建。系统采用清晰的分层架构,涵盖用户端、前端接口、后端服务、权限控制及数据层。通过增强的 RBAC 权限模型,实现了从菜单配置到动态角色绑定的自动化权限管理,并结合 Redis 缓存优化性能。同时,部署架构支持高可用性,安全设计遵循最小化原则,确保平台稳定运行与数据安全。
|
机器学习/深度学习 人工智能 自然语言处理
从人工智能到大模型的演变
本文概述了人工智能从早期的规则基础系统到现代大模型的演变过程,涵盖了符号主义、专家系统、统计学习、深度学习、自然语言处理以及大模型的出现与应用,分析了各阶段的关键技术和面临的挑战,展望了未来的发展方向。
823 3
|
JavaScript
箭头函数与普通函数(function)的区别
箭头函数是ES6引入的新特性,与传统函数相比,它有更简洁的语法,且没有自己的this、arguments、super或new.target绑定,而是继承自外层作用域。箭头函数不适用于构造函数,不能使用new关键字调用。
|
XML 存储 缓存
Squid 缓存服务器配置
Squid 缓存服务器配置
873 0

热门文章

最新文章

下一篇
开通oss服务