2.21 alarm函数 2.22setitimer定时器函数

news2024/11/24 17:00:44

2.21 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 <stdio.h>
#include <unistd.h>

int main() {

    int seconds = alarm(5);
    printf("seconds = %d\n", seconds);  // 0

    sleep(2);
    seconds = alarm(2);    // 不阻塞
    printf("seconds = %d\n", seconds);  // 3


    //while循环的目的是,过了两秒后,倒计时为0时,函数会给当前的进程发送一个信号:SIGALARM,默认终止当前的进程。
    while(1) {

    }

    return 0;
}

最终效果:
在这里插入图片描述

1秒电脑能数多少个数?

// 1秒钟电脑能数多少个数?
#include <stdio.h>
#include <unistd.h>
  
/*
    实际的时间 = 内核时间(系统调用) + 用户时间(普通代码执行) + 消耗的时间(IO操作)
    进行文件IO操作的时候比较浪费时间

    定时器,与进程的状态无关(自然定时法)。无论进程处于什么状态,alarm都会计时。
*/

int main() {    

    alarm(1);

    int i = 0;
    while(1) {
        printf("%i\n", i++);
    }

    return 0;
}

2.22setitimer定时器函数

在这里插入图片描述

#include <sys/time.h>
#include <stdio.h>
#include <stdlib.h>

// 过3秒以后,每隔2秒钟定时一次
int main() {

    struct itimerval new_value;

    // 设置间隔的时间
    new_value.it_interval.tv_sec = 2;
    new_value.it_interval.tv_usec = 0;

    // 设置延迟的时间,3秒之后开始第一次定时
    new_value.it_value.tv_sec = 3;
    new_value.it_value.tv_usec = 0;


    int ret = setitimer(ITIMER_REAL, &new_value, NULL); // 非阻塞的
    printf("定时器开始了...\n");

    if(ret == -1) {
        perror("setitimer");
        exit(0);
    }

    getchar();

    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/635719.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python如何另起一行输出

Python如何另起一行输出 如果你正在学习Python编程&#xff0c;你肯定已经遇到过这个问题&#xff1a;如何另起一行输出&#xff1f; Python是一门非常强大的编程语言&#xff0c;它可以完成各种各样的任务&#xff0c;包括从简单的文本处理到复杂的数据分析和机器学习。但是…

【Paper】2019_Event-triggered based scaled consensus for multi-agent systems

Wu X, Mu X. Event-triggered based scaled consensus for multi-agent systems[C]//2019 Chinese Control Conference (CCC). IEEE, 2019: 5544-5549. 文章目录 1 Introduction2 Preparation and problem description2.1 Graph theory2.2 Problem formulation 3 Centralized a…

chatgpt赋能python:Python怎么变颜色

Python怎么变颜色 Python是一种高级编程语言&#xff0c;因其简单易学、开发效率高、运行速度快等优点而广受开发者欢迎。在Python编程过程中&#xff0c;经常需要输出不同颜色的文字以便于提示用户。那么&#xff0c;Python怎么变颜色呢&#xff1f;本文将为大家介绍Python中…

小型中文版聊天机器人

入门小菜鸟&#xff0c;希望像做笔记记录自己学的东西&#xff0c;也希望能帮助到同样入门的人&#xff0c;更希望大佬们帮忙纠错啦~侵权立删。 目录 一、简单介绍与参考鸣谢 二、数据集介绍 三、数据预处理 1、重复标点符号表达 2、英文标点符号变为中文标点符号 3、繁…

visionpro与abb机器人通信

视觉把坐标传给机器人&#xff0c;机器人根据坐标去拿料 接线&#xff1a;用的海康的镜头 机器人是PNP输出 海康接个1千欧的电阻 接的机器人db652板14和15口子 VP设置 作为 服务器 abb位客户端 发往abb的xy坐标 通信成功会如下图所示 ABB需要的配置项 ABB多任务走通信把…

chatgpt赋能python:Python如何取消空格提升SEO排名

Python如何取消空格提升SEO排名 作为一种高效的编程语言&#xff0c;Python已经成为了许多网站开发人员和SEO优化人员的首选工具。在网站优化中&#xff0c;取消空格是一个重要的优化技术&#xff0c;它可以提升网站速度&#xff0c;提高网站体验&#xff0c;同时也可以提升SE…

关于使用keil瑞萨A4M2踩过的坑

一、之前在rasc添加的组件不能删除。 下面在rasc添加ThreadX&#xff0c;不只是RTOS&#xff0c;其他组件也出现这种情况。 当去掉组件不使用&#xff0c;重新配置。但是组件还是显示在软件包&#xff0c;导致编译出错。 解决方式&#xff0c;自己琢磨发现&#xff1a; 找到工…

经典多模态模型

整点传统多模态学习 接下来看看经典模型&#xff0c;传统多模态任务是下游任务是图文检索(Image Text Retrieval)&#xff0c;视觉问答&#xff08;VQA&#xff09;&#xff0c;视觉推理&#xff08;Visual Reasoning&#xff09;&#xff0c;视觉蕴含&#xff08;Visual Enta…

总结897

每周小结&#xff1a; 这周将线代强化进行到第3讲&#xff0c;做杨超三大计算 英语每天早上巩固之前背诵的文章&#xff0c;每日一个长难句分析&#xff0c;背单词&#xff0c;做题目&#xff0c;准备六级 专业课&#xff0c;刚开始复习 每日必复习&#xff08;5分钟&#x…

【C/C++数据结构与算法】华为C/C++编程规范

目录 一、文件结构 二、程序版式 三、命名规则 四、表达式与基本语句 五、常量 六、函数设计 七、内存管理 八、C高级特性 一、文件结构 避免头文件被重复引用&#xff0c;用 #pragma once 进行预处理用 <> 引用标注库头文件&#xff0c;用 "" 引用自…

Servlet图书管理系统测试报告

密级 中级 (供内部测试完毕后使用) Servlet图书管理系统 测试报告 报告编号: ServletBMS-TR-1 &#xff08;Servlet Book Management System-Testing Report&#xff09; 部门经理______项目经理______ 开发经理______测试经理______ 研发公司: 第六科技有限公司 用户单…

【Web服用应用】LVS+Keepalived群集

LVSKeepaLived群集 一、Keepalived及其工作原理1.1Keepalived体系主要模块及其作用1.2健康检查的方式&#xff08;探针&#xff09; 二、LVSKeepalived 高可用群集部署2.1LVS部署<font colorred>1.配置负载调度器&#xff08;主、备相同&#xff09;2配置节点服务器 三、…

JS逆向吐环境

这里调用时机是webpack加载器加载完成后的吐出 1.定位加载器 2.断下目标模块 1.加载完成后&#xff0c;sfu(t), 可以看到明显的加载器&#xff0c;手扣太费劲&#xff0c;直接输出吧 可以看到明显的模块函数&#xff0c;随便测试一个 把函数转为字符串&#xff0c;调用的函数环…

chatgpt赋能python:Python中的矩阵合并方法:介绍和使用方法

Python中的矩阵合并方法: 介绍和使用方法 矩阵合并是Python编程中常用的操作之一&#xff0c;特别是针对数据分析、机器学习和深度学习等领域。Python提供了多种方法来合并矩阵&#xff0c;本文将介绍这些方法并分享如何在实际应用中使用它们。 普通矩阵合并 最基础的矩阵合…

前端vue入门(纯代码)06

【04.mixin混入】 功能&#xff1a;可以把多个组件共用的配置提取成一个混入对象 使用方式&#xff1a; 第一步&#xff1a;定义混合并暴露。 export const mixin {data(){....},methods:{....}.... }第二步&#xff1a;导入mixin.js【混入】文件&#xff0c;并使用混入。 全局…

动态规划dp —— 20.环形子数组的最大和

因为数组是环形的&#xff0c;所以子数组最大和有两种情况&#xff1a; 一个数组内所以数的和是固定的&#xff0c;如果阴影部分是最大子数组和&#xff0c;那么空白部分就是最小子数组和&#xff0c;因此&#xff1a;第二种情况下&#xff0c;只需要求得最小子数组和&#xff…

Java虚拟机——垃圾收集算法

垃圾收集算法的实现涉及大量的程序细节。这里只重点介绍 分代收集理论 和 几种算法思想及发展过程 3.3.1 分代收集理论 分代收集建立在两个 分代假说之上 弱分代假说 &#xff1a; 绝大多数对象都是朝生夕灭的强分代假说&#xff1a; 熬过越多次垃圾收集过程的对象就越难以…

chatgpt赋能python:Python与数据库连接的完整指南

Python与数据库连接的完整指南 作为全球最受欢迎的编程语言之一&#xff0c;Python已经被广泛应用于各种领域&#xff0c;特别是与数据库的交互。 Python拥有用于连接各种数据库的强大库和API&#xff0c;其中包括MySQL&#xff0c;Oracle&#xff0c;PostgreSQL等。在这里&am…

远程控制和原理和实践

按理来说&#xff0c;本人不该发表此类专业的文章&#xff0c;但是从鄙人的开发经历出发&#xff0c;让本人斗胆在此对远控软件做一些论述&#xff0c;谈论一点自己的认识。 程序工程代码地址&#xff1a;点击此处下载。 程序分为两个部分&#xff0c;控制端和被控端&#xf…

【Note7】uboot,

文章目录 1.uboot1.U-Boot命令之常用命令&#xff1a;7.U-Boot命令之EMMC和SD卡操作命令&#xff1a;一般EMMC和SD卡是同一个东西&#xff0c;没特殊说明&#xff0c;统一MMC来代指EMMC和SD卡8.U-Boot命令之内存操作命令&#xff1a;直接对DRAM进行读写操作&#xff0c;uboot命…