使用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里边的代码如下: #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的实战总结大全
🙂博主:冰海恋雨 🙂文章核心:uniapp部分总结 目录 编辑 目录 前言: 解决方案 1. 跨平台开发 2. Vue.js生态 3. 组件库 4. 自定义组件 5. Native能力 6. 插件生态 7. 性能优化 写法 1. 模板…...
No205.精选前端面试题,享受每天的挑战和学习
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…...
保序回归:拯救你的校准曲线(APP)
保序回归:拯救你的校准曲线(APP) 校准曲线之所以是评价模型效能的重要指标是因为,校准曲线衡量模型预测概率与实际发生概率之间的一致性,它可以帮助我们了解模型的预测结果是否可信。一个理想的模型应该能够准确地预测…...
清华镜像源地址,适用于pip下载速度过慢从而导致下载失败的问题
清华地址 https://pypi.tuna.tsinghua.edu.cn/simple下载各种各样的包的指令模板 pip install XXX -i https://pypi.tuna.tsinghua.edu.cn/simple这样就行了,XXX代表的是你将要下载的包名称。 比如: pip install opencv-python -i https://pypi.tuna.…...
arcgis--NoData数据处理
方法一:利用【栅格计算器】可以对NoData的值进行修改。【Spatial Analyst工具】-【地图代数】-【栅格计算器】,将NoData修改为某一个值。 方法二:先对原始数据进行重分类,分成1类,将NoData赋值为2,。然后,将…...
基于单片机教室人数实时检测系统仿真及源程序
一、系统方案 1、本设计采用51单片机作为主控器。 2、红外传感器检测进出人数,液晶1602显示。 3、按键最多容纳人数,烟雾报警。 二、硬件设计 原理图如下: 三、单片机软件设计 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的区别
返回值不同:RestController注解的类中的所有方法都会返回JSON或XML等数据格式,而Controller注解的类中的方法可以返回JSP或HTML等视图页面。 默认注解不同:RestController注解中包含了ResponseBody注解,表示返回的数据会直接作为…...
oracle 不支持的字符集 orai18n.jar ZHS16GBK 异常问题解决
项目场景: 项目中有使用到oracle数据库来存在数据。 问题描述 在使用查询语句是,oracle会报错。 java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK 原因分析: 经排查发现缺少oracle字符集的依赖包导致的。…...
设计模式-04-原型模式
经典的设计模式有23种,但是常用的设计模式一般情况下不会到一半,我们就针对一些常用的设计模式进行一些详细的讲解和分析,方便大家更加容易理解和使用设计模式。 1-什么是原型模式 如果对象的创建成本比较大,而同一个类的不同对象…...
D. Jumping on Walls bfs
Problem - 199D - Codeforces 题目大意:有一个两个垂直的平行墙壁组成的一个峡谷。一个人初始是在左边墙壁第一层。在每个墙壁上有些障碍点,用X表示,这些障碍点不能被到达。,他可以执行以下三个操作: 向当前墙壁往上…...
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全网通安卓智能模块,具有超高性能和低功耗特点。该模块采用联发科AIOT芯片平台。 MT8788核心板搭载了12nm制程的四个Cortex-A73和四个Cortex-A53处理器,最高主频可达2.0GHZ。它还配备了4GB64GB(2GB16GB、3GB32GB)的内存&a…...
Matlab批量提取图片特征向量
最近matlab数字图像处理课程需要,对上千张训练集测试集图片进行批量的特征提取,作为 SVM的输入。 所以就有了用matlab来批量提取图像特征向量,并保存,方便后续使用。 批量提取函数: % 函数返回参数% 分类列向量Categ…...
数据库系统原理与实践 笔记 #8
文章目录 数据库系统原理与实践 笔记 #8关系数据库设计(续)规范化(Normalization)范式(Normal Form)第一范式第二范式Boyce-Codd范式(BCNF)将模式分解成BCNFBCNF和保持依赖第三范式 函数依赖理论正则覆盖无关属性无关属性的验证无损分解保持依赖 数据库系统原理与实践 笔记 #8 …...
Ubuntu 和 Windows 文件互传
FTP 服务 FTP 采用 Internet 标准文件传输协议 FTP 的用户界面, 向用户提供了一组用来管理计算机之间文件传输的应用程序。在开发的过程中会频繁的在 Windows 和 Ubuntu 下进行文件传输,比如在 Windwos 下进行代码编写,然后将编写好的代码拿到…...
如何在WPF应用程序中全局捕获异常
在WPF (Windows Presentation Foundation) 应用程序中,你可以使用 AppDomain.CurrentDomain.UnhandledException 事件来全局捕获未处理的异常。这个事件会在应用程序中的任何地方发生未处理的异常时触发。以下是一个简单的例子,演示如何在WPF应用程序中全…...
自定义Matplotlib中的颜色映射(cmap)
要自定义Matplotlib中的颜色映射(cmap),您可以按照以下步骤进行操作: 导入所需的库: import numpy as np import matplotlib.pyplot as plt from matplotlib.colors import LinearSegmentedColormap创建自定义颜色映…...
Ansible的filter
环境 控制节点:Ubuntu 22.04Ansible 2.10.8管理节点:CentOS 8 filter 使用filter可以对数据做操作,比如把JSON数据转换为YAML数据,从URL中解析出hostname,提取字符串的SHA1哈希值,做数学运算,…...
Buzz音频转录完全指南:3大核心功能+5个实战场景,快速掌握本地语音转文字技术
Buzz音频转录完全指南:3大核心功能5个实战场景,快速掌握本地语音转文字技术 【免费下载链接】buzz Buzz transcribes and translates audio offline on your personal computer. Powered by OpenAIs Whisper. 项目地址: https://gitcode.com/GitHub_Tr…...
作业本耐用度差距巨大?深圳大明印刷厂拆解合规工艺,告别定制作业本掉页开裂通病
在校园日常教学中,很多学校都会遇到同一个难题:同一学期采购的作业本、定制作业本,品质差距悬殊,有的完好无损用到期末,有的短短几周就出现书脊开裂、页面脱落、边角破损、翻页卡顿等问题。不少人误以为是学生使用习惯…...
从多路复用到三维光阵:Arduino驱动8x8x8 LED立方体全解析
1. 项目概述:用Arduino点亮一个三维世界几年前,我第一次在创客展上看到一个8x8x8的LED立方体,那种由数百个光点构成的、在三维空间中流动的动画效果,瞬间就把我吸引住了。它不像普通的平面LED屏,而是真正有“深度”的光…...
Unity主题系统设计:状态驱动的主题抽象与自动注入方案
1. 这不是换个颜色那么简单:为什么Unity项目里“换肤”总在发布前夜崩盘?你有没有经历过这样的场景:美术同学凌晨两点发来一套新主题资源包,UI设计师说“这次配色更符合品牌调性”,产品说“上线前必须支持深色模式”&a…...
美团外卖mtgsig与waimai_sign双层签名逆向解析
1. 这不是“爬虫教程”,而是一份反向工程现场笔记你搜到这篇内容,大概率正卡在某个调试窗口前:抓包看到mtgsig和waimai_sign两个参数像两堵墙,无论怎么改请求头、换UA、清缓存,返回永远是{"code":403,"…...
通过TaotokenCLI工具一键配置开发环境接入参数
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过Taotoken CLI工具一键配置开发环境接入参数 对于需要接入多个大模型服务的开发者而言,手动配置每个项目的API密钥、…...
Claude Code用户告别封号与Token焦虑,无缝切换至Taotoken平台
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Claude Code用户告别封号与Token焦虑,无缝切换至Taotoken平台 对于依赖Claude Code进行编程辅助的开发者而言ÿ…...
DeTikZify:基于AI的TikZ图形程序自动生成技术深度解析
DeTikZify:基于AI的TikZ图形程序自动生成技术深度解析 【免费下载链接】DeTikZify Synthesizing Graphics Programs for Scientific Figures and Sketches with TikZ. 项目地址: https://gitcode.com/gh_mirrors/de/DeTikZify DeTikZify是一款革命性的多模态…...
HKMG工艺的“阿喀琉斯之踵”:聊聊那个无法移除的SiON界面层与未来0.3nm的挑战
HKMG工艺的隐形枷锁:SiON界面层的物理宿命与亚纳米级突围战 在半导体工艺演进的史诗中,HKMG(高K金属栅)技术曾被寄予厚望——它用金属栅极替代传统多晶硅,搭配高K介质材料HfO₂,一举解决了栅极耗尽和漏电流…...
《关于 AI Agent 基础设施的一些奇思妙想》
目录 目录 目录 一、AI Agent 容器 问题背景 想法思路:API 中转站模式 多 Agent 切换 二、手机端操控 AI Agent(手机与电脑互联) 三、AI 开发依赖管理工具 总结 最近 AI Agent 越来越火,我作为一个重度使用者,…...
