当前位置: 首页 > news >正文

使用select实现定时任务

selectOutOfTime.c里边的代码如下:

#include<stdio.h>
#include<sys/time.h>
#include<sys/types.h>
#include<unistd.h>
#include <string.h>#define BUF_SIZE 100int main(void){fd_set reads;struct timeval tv;int errorNum;char send_line[BUF_SIZE];FD_ZERO(&reads);FD_SET(0,&reads);tv.tv_sec = 5;tv.tv_usec = 0;errorNum = select(1,&reads,NULL,NULL,&tv);// 原先以为第一个参数中,0 代表标准输入,1代表标准输出,这是错误的想法if (FD_ISSET(STDIN_FILENO, &reads)) {if (fgets(send_line, BUF_SIZE, stdin) != NULL) {int i = strlen(send_line);if (send_line[i - 1] == '\n') {send_line[i - 1] = 0;}printf("input string: %s\n", send_line);}}if(errorNum == -1){perror("select()");}else if(errorNum){printf("Data is available now.\n");}else{//此处就是当errorNum = 0时,表明超时了printf("No data within five seconds.\n");}return 0;
}

可以看到这是一个简单的定时小程序,若是5秒内没有输入字符串,那么就会输出No data within five seconds.,然后程序退出;要是5秒内输入字符串了,那么就会先把input string:+刚刚输入的字符串输出到屏幕上,之后再输出Data is available now.,然后结束程序。
sudo gcc selectOutOfTime.c -o selectOutOfTime进行编译,sudo ./selectOutOfTime两次执行,对应上边的5秒内是否输出字符串的描述。
在这里插入图片描述

进行一下改动,就可以实现定时任务了,selectOutOfTimeWhile.c代码如下:

#include<stdio.h>
#include<sys/time.h>
#include<sys/types.h>
#include<unistd.h>
#include <string.h>#define BUF_SIZE 100int main(void){fd_set reads, cpy_reads;struct timeval tv;int errorNum;char send_line[BUF_SIZE];FD_ZERO(&reads);FD_SET(0,&reads);while(1){cpy_reads=reads;tv.tv_sec = 5;tv.tv_usec = 0;errorNum = select(1,&cpy_reads,NULL,NULL,&tv);if (FD_ISSET(STDIN_FILENO, &cpy_reads)) {FD_CLR(STDIN_FILENO, &cpy_reads);if (fgets(send_line, BUF_SIZE, stdin) != NULL) {int i = strlen(send_line);if (send_line[i - 1] == '\n') {send_line[i - 1] = 0;}printf("input string: %s\n", send_line);}}if(errorNum == -1){perror("select()");}else if(errorNum){printf("Data is available now.\n");}else{printf("No data within five seconds.\n");}}return 0;
}

sudo gcc selectOutOfTimeWhile.c -o selectOutOfTimeWhile进行编译,sudo ./selectOutOfTimeWhile执行,之后可以看到若是没有输入内容的话,那么就会每隔5秒输出No data within five seconds.,最后按下Ctrl+c退出程序。
在这里插入图片描述

此文章为11月Day 14学习笔记,内容来源于极客时间《网络编程实战》。

相关文章:

使用select实现定时任务

selectOutOfTime.c里边的代码如下&#xff1a; #include<stdio.h> #include<sys/time.h> #include<sys/types.h> #include<unistd.h> #include <string.h>#define BUF_SIZE 100int main(void){fd_set reads;struct timeval tv;int errorNum;cha…...

uniapp的实战总结大全

&#x1f642;博主&#xff1a;冰海恋雨 &#x1f642;文章核心&#xff1a;uniapp部分总结 目录 ​编辑 目录 前言&#xff1a; 解决方案 1. 跨平台开发 2. Vue.js生态 3. 组件库 4. 自定义组件 5. Native能力 6. 插件生态 7. 性能优化 写法 1. 模板&#xf…...

No205.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…...

保序回归:拯救你的校准曲线(APP)

保序回归&#xff1a;拯救你的校准曲线&#xff08;APP&#xff09; 校准曲线之所以是评价模型效能的重要指标是因为&#xff0c;校准曲线衡量模型预测概率与实际发生概率之间的一致性&#xff0c;它可以帮助我们了解模型的预测结果是否可信。一个理想的模型应该能够准确地预测…...

清华镜像源地址,适用于pip下载速度过慢从而导致下载失败的问题

清华地址 https://pypi.tuna.tsinghua.edu.cn/simple下载各种各样的包的指令模板 pip install XXX -i https://pypi.tuna.tsinghua.edu.cn/simple这样就行了&#xff0c;XXX代表的是你将要下载的包名称。 比如&#xff1a; pip install opencv-python -i https://pypi.tuna.…...

arcgis--NoData数据处理

方法一&#xff1a;利用【栅格计算器】可以对NoData的值进行修改。【Spatial Analyst工具】-【地图代数】-【栅格计算器】&#xff0c;将NoData修改为某一个值。 方法二&#xff1a;先对原始数据进行重分类&#xff0c;分成1类&#xff0c;将NoData赋值为2,。然后&#xff0c;将…...

基于单片机教室人数实时检测系统仿真及源程序

一、系统方案 1、本设计采用51单片机作为主控器。 2、红外传感器检测进出人数&#xff0c;液晶1602显示。 3、按键最多容纳人数&#xff0c;烟雾报警。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统初始化 void lcd_init() { lcd_write_com(0x38…...

【Linux笔记】Linux环境变量与地址空间

【Linux笔记】Linux环境变量与地址空间 一、命令行参数1.1、main函数的参数1.2、main函数的第三个参数 二、环境变量的概念与内容2.1、环境变量的概念2.2、环境变量的分类2.3、环境变量的组织形式2.4、常见的环境变量 三、设置环境变量3.1、通过命令获取或设置环境变量3.2、通过…...

【springboot】@restcontroller和@controller的区别

返回值不同&#xff1a;RestController注解的类中的所有方法都会返回JSON或XML等数据格式&#xff0c;而Controller注解的类中的方法可以返回JSP或HTML等视图页面。 默认注解不同&#xff1a;RestController注解中包含了ResponseBody注解&#xff0c;表示返回的数据会直接作为…...

oracle 不支持的字符集 orai18n.jar ZHS16GBK 异常问题解决

项目场景&#xff1a; 项目中有使用到oracle数据库来存在数据。 问题描述 在使用查询语句是&#xff0c;oracle会报错。 java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK 原因分析&#xff1a; 经排查发现缺少oracle字符集的依赖包导致的。…...

设计模式-04-原型模式

经典的设计模式有23种&#xff0c;但是常用的设计模式一般情况下不会到一半&#xff0c;我们就针对一些常用的设计模式进行一些详细的讲解和分析&#xff0c;方便大家更加容易理解和使用设计模式。 1-什么是原型模式 如果对象的创建成本比较大&#xff0c;而同一个类的不同对象…...

D. Jumping on Walls bfs

Problem - 199D - Codeforces 题目大意&#xff1a;有一个两个垂直的平行墙壁组成的一个峡谷。一个人初始是在左边墙壁第一层。在每个墙壁上有些障碍点&#xff0c;用X表示&#xff0c;这些障碍点不能被到达。&#xff0c;他可以执行以下三个操作&#xff1a; 向当前墙壁往上…...

preg_replace调用system(“ls“)

题目 <?php error_reporting(0); if(isset($_GET[code]) && isset($_POST[pattern])) {$pattern$_POST[pattern];if(!preg_match("/flag|system|pass|cat|chr|ls|[0-9]|tac|nl|od|ini_set|eval|exec|dir|\.|\|read*|show|file|\<|popen|pcntl|var_dump|pr…...

MT8788核心板主要参数介绍_联发科MTK安卓核心板智能模块

MT8788核心板是一款功能强大的4G全网通安卓智能模块&#xff0c;具有超高性能和低功耗特点。该模块采用联发科AIOT芯片平台。 MT8788核心板搭载了12nm制程的四个Cortex-A73和四个Cortex-A53处理器&#xff0c;最高主频可达2.0GHZ。它还配备了4GB64GB(2GB16GB、3GB32GB)的内存&a…...

Matlab批量提取图片特征向量

最近matlab数字图像处理课程需要&#xff0c;对上千张训练集测试集图片进行批量的特征提取&#xff0c;作为 SVM的输入。 所以就有了用matlab来批量提取图像特征向量&#xff0c;并保存&#xff0c;方便后续使用。 批量提取函数&#xff1a; % 函数返回参数% 分类列向量Categ…...

数据库系统原理与实践 笔记 #8

文章目录 数据库系统原理与实践 笔记 #8关系数据库设计(续)规范化(Normalization)范式(Normal Form)第一范式第二范式Boyce-Codd范式(BCNF)将模式分解成BCNFBCNF和保持依赖第三范式 函数依赖理论正则覆盖无关属性无关属性的验证无损分解保持依赖 数据库系统原理与实践 笔记 #8 …...

Ubuntu 和 Windows 文件互传

FTP 服务 FTP 采用 Internet 标准文件传输协议 FTP 的用户界面&#xff0c; 向用户提供了一组用来管理计算机之间文件传输的应用程序。在开发的过程中会频繁的在 Windows 和 Ubuntu 下进行文件传输&#xff0c;比如在 Windwos 下进行代码编写&#xff0c;然后将编写好的代码拿到…...

如何在WPF应用程序中全局捕获异常

在WPF (Windows Presentation Foundation) 应用程序中&#xff0c;你可以使用 AppDomain.CurrentDomain.UnhandledException 事件来全局捕获未处理的异常。这个事件会在应用程序中的任何地方发生未处理的异常时触发。以下是一个简单的例子&#xff0c;演示如何在WPF应用程序中全…...

自定义Matplotlib中的颜色映射(cmap)

要自定义Matplotlib中的颜色映射&#xff08;cmap&#xff09;&#xff0c;您可以按照以下步骤进行操作&#xff1a; 导入所需的库&#xff1a; import numpy as np import matplotlib.pyplot as plt from matplotlib.colors import LinearSegmentedColormap创建自定义颜色映…...

Ansible的filter

环境 控制节点&#xff1a;Ubuntu 22.04Ansible 2.10.8管理节点&#xff1a;CentOS 8 filter 使用filter可以对数据做操作&#xff0c;比如把JSON数据转换为YAML数据&#xff0c;从URL中解析出hostname&#xff0c;提取字符串的SHA1哈希值&#xff0c;做数学运算&#xff0c…...

Retinaface+CurricularFace在网络安全领域的创新应用

RetinafaceCurricularFace在网络安全领域的创新应用 1. 引言 想象一下这样的场景&#xff1a;一家金融机构的服务器机房&#xff0c;只有授权人员才能进入&#xff1b;一个远程办公系统&#xff0c;确保登录者确实是员工本人&#xff1b;一个高安全性的数据平台&#xff0c;每…...

文件日期更改器:在 Windows 上修改文件日期的完整指南

需要更改文件创建日期或编辑修改时间戳&#xff1f;我们的综合指南揭示了三种有效的文件日期修改方法&#xff0c;其中包括评价最高的文件属性日期修改工具——视频转换器的文件日期修改器。学习专业的文件日期修改技巧&#xff0c;同时确保数据完整性。为什么您可能需要更改文…...

Obsidian插件管理技巧:从零开始配置你的第二个知识库

Obsidian插件管理技巧&#xff1a;从零开始配置你的第二个知识库 当你已经熟悉了Obsidian的基础操作&#xff0c;并建立了第一个知识库后&#xff0c;很可能会想要创建第二个知识库来管理不同的项目或学习领域。但这时你会发现&#xff0c;新建的知识库并没有自动继承你精心配置…...

CVAT:让计算机视觉标注效率提升80%的开源数据引擎

CVAT&#xff1a;让计算机视觉标注效率提升80%的开源数据引擎 【免费下载链接】cvat Annotate better with CVAT, the industry-leading data engine for machine learning. Used and trusted by teams at any scale, for data of any scale. 项目地址: https://gitcode.com/…...

Notepad4:轻量级编辑器的技术突破与实用指南

Notepad4&#xff1a;轻量级编辑器的技术突破与实用指南 【免费下载链接】notepad2 Notepad2-zufuliu is a light-weight Scintilla based text editor for Windows with syntax highlighting, code folding, auto-completion and API list for many programming languages and…...

Qwen3-ASR-0.6B开发者案例:集成至CRM系统实现通话内容自动归档

Qwen3-ASR-0.6B开发者案例&#xff1a;集成至CRM系统实现通话内容自动归档 1. 项目背景与需求场景 在现代企业客户关系管理&#xff08;CRM&#xff09;系统中&#xff0c;通话录音是宝贵的业务数据资源。销售团队的客户沟通、客服中心的问题解决、业务洽谈的重要细节——所有…...

不会写C代码也能做飞控?手把手教你用Matlab/Simulink和FMT搭建无人机算法模型

零代码飞控开发实战&#xff1a;用Matlab/SimulinkFMT实现无人机算法快速迭代 当无人机行业从极客玩具转向工业级应用时&#xff0c;传统飞控开发模式正面临严峻挑战——某高校研究团队曾花费三个月手工编写PID控制代码&#xff0c;却在首次试飞时因姿态解算模块的数值溢出导致…...

Claude Code 命令行参数实践指南

前言 很多人第一次打开 Claude Code&#xff0c;只会输入 claude&#xff0c;然后开始聊天。这当然可以&#xff0c;但就像开车只会踩油门一样——你根本没用上方向盘和变速箱。 命令行参数&#xff08;CLI Flags&#xff09;就是那些被忽视的"方向盘"。掌握它们&a…...

AI印象派艺术工坊WebUI定制:前端界面修改实战案例

AI印象派艺术工坊WebUI定制&#xff1a;前端界面修改实战案例 1. 引言 你有没有想过&#xff0c;自己也能像艺术家一样&#xff0c;把随手拍的照片变成一幅幅精美的画作&#xff1f;素描、彩铅、油画、水彩&#xff0c;这些听起来需要多年绘画功底才能完成的作品&#xff0c;…...

Windows个性化视觉增强:TranslucentTB打造专属任务栏体验

Windows个性化视觉增强&#xff1a;TranslucentTB打造专属任务栏体验 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 您是否曾感到Window…...