C++_linux下_非阻塞键盘控制_程序暂停和继续
1. 功能
在程序执行过程中,点击键盘p按键(pause), 程序暂停, 点击键盘上的n按键(next),程序继续执行
2. 代码
#include <iostream>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/ioctl.h> char get_keyboard()
{//fd_set 为long型数组//其每个元素都能和打开的文件句柄建立联系fd_set rfds;struct timeval tv;char c = '\0';//将 rfds数组清零FD_ZERO(&rfds);//将rfds的第0位置为1,这样fd=1的文件描述符就添加到了rfds中//最初 rfds为00000000,添加后变为10000000FD_SET(0, &rfds);tv.tv_sec = 0;tv.tv_usec = 10; //设置等待超时时间//检测键盘是否有输入//由内核根据io状态修改rfds的内容,来判断执行了select的进程哪个句柄可读if (select(1, &rfds, NULL, NULL, &tv) > 0){c = getchar();}//没有数据返回'\0'return c;
}int main(int argc, char **argv)
{int tmp = system("stty -icanon");for (int i = 0; i < 10000; i++){char control_char = get_keyboard();std::cout << "control_char: " << control_char << std::endl;if (control_char == 'p') // pause{sleep(1);do{control_char = get_keyboard();} while (!(control_char == 'n')); // next}// do-somethingstd::cout << "count: i = " << i << std::endl;}return 0;
}
可以使用opencv中相关函数简单实现: 空格键暂停, 其它任意键继续:
// ...
int key = cv::waitKey(100) & 0xff;
if (key == 32) //bland
{cv::waitKey(0);
}
// ...
参考: linux下实现键盘的无阻塞输入_fd_zero(&rfds);-CSDN博客
相关文章:
C++_linux下_非阻塞键盘控制_程序暂停和继续
1. 功能 在程序执行过程中,点击键盘p按键(pause), 程序暂停, 点击键盘上的n按键(next),程序继续执行 2. 代码 #include <iostream> #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <sys/ioctl.h> char get_keyboar…...
SQL AND, OR and NOT(与,或不是运算符)
SQL AND & OR 运算符 AND&OR运算符用于根据一个以上的条件过滤记录,即用于组合多个条件以缩小SQL语句中的数据。 WHERE子句可以与AND,OR和NOT运算符结合使用。 AND和OR运算符用于根据多个条件筛选记录: 如果由AND分隔的所有条件为TR…...
Python网络编程之Socket(套接字)
文章目录 一、Socket概念二、套接字的发展史及分类三、Socket的使用语法格式(基于TCP协议)1.基于TCP协议的套接字(socket)编程半连接池 2.基于UDP协议的套接字(socket)编程也可以使用服务端只接收客户端消息 黏包现象 一、Socket概念 Socket套接字,一种独立于协议的…...
金山终端安全系统V9.0 SQL注入漏洞复现
0x01 产品简介 金山终端安全系统是一款为企业提供终端防护的安全产品,针对恶意软件、病毒和外部攻击提供防范措施,帮助维护企业数据和网络。 0x02 漏洞概述 金山终端安全系统V9.0 /inter/update_software_info_v2.php页面存在sql注入漏洞,该…...
Radius OTP完成堡垒机登录认证 安当加密
Radius OTP(One-Time Password)是一种用于身份验证的协议,它通过向用户发送一个一次性密码来验证用户的身份。使用Radius OTP可以实现堡垒机登录,以下是一些实现步骤: 1、安装Radius服务器 首先需要安装Radius服务器…...
ROS opencv 人脸识别
人脸识别需要在输入的图像中确定人脸(如果存在)的位置、大小和姿态,往往用于生物特征识别、视频监听、人机交互等应用中。2001年,Viola和Jones提出了基于Haar特征的级联分类器对象检测算法,并在2002年由Lienhart和Mayd…...
文心一言 4.0 ERNIE-Bot 4.0 :ERNIE-Bot 4.0 大模型深度测试体验报告
本心、输入输出、结果 文章目录 文心一言 4.0 ERNIE-Bot 4.0 :ERNIE-Bot 4.0 大模型深度测试体验报告前言相关跳转文心一言 4.0 ERNIE-Bot 4.0 接口简介Bash 请求示例代码Windows 模式使用 Python 请求如果直接使用官方提供的代码文心一言 4.0 ERNIE-Bot 4.0 API 在…...
华为OD机考B卷 | 100分】阿里巴巴找黄金宝箱(JAVA题解——也许是全网最详)
前言 本人是算法小白,甚至也没有做过Leetcode。所以,我相信【同为菜鸡的我更能理解作为菜鸡的你们的痛点】。 题干 1. 题目描述 一贫如洗的樵夫阿里巴巴在去砍柴的路上,无意中发现了强盗集团的藏宝地,藏宝地有编号从0~N的箱子&…...
请求转发和重定向区别
两者区别: 1.转发在一次请求中完成,重定向是两次请求 2.转发操作发生在服务器内部,重定向是在浏览器执行操作 3.转发地址栏不变,重定向地址栏变化(两次请求,两个地址) 4.转发可以在一次请求中共…...
JS如何判断对象为空?以及各自的缺点。
JS如何判断对象为空?以及各自的缺点。 Object.keys() 通过 Object.keys() 来获取对象的键进行判断。 function isEmpty(obj) {return Object.keys(obj).length 0; }console.log(isEmpty({})); // true console.log(isEmpty({ a: 1 })); // false缺点:…...
同城代驾开源版小程序开发
同城代驾开源版小程序开发 功能特性描述: 定价模式:本系统支持灵活的计价模式,包括白天和夜晚的起步价、起步里程、每公里价以及超时费用,从而满足不同时段的定价需求。 实时路径计算:通过集成腾讯地图的软件开发工…...
【Python机器学习】零基础掌握ShrunkCovariance协方差估计
有没有想过如何准确地评估股票投资的风险? 在投资领域,了解各种资产(如股票、债券等)之间的相关性和波动性是非常重要的。常用的方法是计算资产收益率的协方差矩阵,但这个矩阵在样本量少或数据质量不高的情况下可能会产生误导。那么,有没有更好的方法来解决这个问题呢?…...
精神科常用评估量表汇总,建议收藏!
根据精神科医生的量表使用情况,笔者整理了10个精神科常用量表,可在线评测直接出结果,可转发使用,可生成二维码使用,可创建项目进行数据管理,有需要的小伙伴赶紧收藏! 抑郁自评量表 抑郁自评量表…...
Python之切片
Python之切片 切片 通过给定的索引区间获得线性结构的一部分数据start、stop、step为整数,可以是正整数、负整数、零start为0时,可以省略stop为末尾时,可以省略step为1时,可以省略切片时,索引超过上界(右边界)&#…...
OpenCV显示中文(python)
OpenCV添加文字的方法putText(…),添加英文是没有问题的,但如果你要添加中文就会出现“???”的乱码,需要特殊处理一下。 下文提供封装好的(代码)方法,供OpenCV添加中文使…...
k8s-18 认证授权
Authentication (认证) 认证方式现共有8种,可以启用一种或多种认证方式,只要有一种认证方式通过,就不再进行其它方式的认证。通常启用X509 Client Certs和Service Accout Tokens两种认证方式 Kubernetes集群有两类用户:由Kubernetes管理的Ser…...
WebAPI+EF连接SQL Server数据库
右击解决方案-添加-新建项目-选择“类库(.NET Framework)”,新建的项目取名叫WebApi1.EF 添加EF: 新建一个ADO实体数据模型 选择DBFirst 数据源选择MySql 填写数据库地址及账号密码 选择实体框架版本 选择在数据库中的表User 到此配置完成&am…...
maven-plugin-shade 详解1
maven-plugin-shade 是 Maven 的一个插件,它的作用是将多个 jar 包合并成一个 jar,同时将其中的依赖关系也合并到该 jar 中。这个插件常用于创建可执行 jar 包和打包 web 应用程序。 下面是 maven-plugin-shade 的一些常用配置: 打包的形式&…...
C#中LinkedList、Queue<T>和Stack<T>的使用
1、LinkedList(链表) 链表中元素存储内存中是不连续分配,每个元素都有记录前后节点,节点值可以重复,不能通过下标访问,泛型的使用保证类型安全,可以避免装箱拆箱,找元素就只能遍历,查找不方便&…...
流程图如何制作?好用的11款流程图软件盘点!
流程图是一种强大的可视化工具,用于清晰地展示各种过程和步骤,应用非常广泛,在各个行业中随处可见,凡是涉及流程步骤的场景,都可以用到流程图,那么问题来了:流程图如何制作? 这篇文…...
Git内部原理浅析:对象、引用与分支合并策略
Git内部原理浅析:对象、引用与分支合并策略 在软件开发中,Git已成为版本控制系统的标准工具,但其强大的功能背后隐藏着精妙的设计原理。理解Git的内部机制,尤其是对象模型、引用系统以及分支合并策略,不仅能提升开发效…...
LVGL模拟器不止能看Demo:在Ubuntu里用VSCode调试和修改官方例程的实战技巧
LVGL模拟器深度开发指南:在Ubuntu与VSCode中实现高效UI调试 当你在嵌入式设备上开发LVGL界面时,是否经历过反复烧录、调试的漫长等待?模拟器开发可以彻底改变这种低效的工作流程。本文将带你超越简单的Demo演示,探索如何将LVGL模…...
新手必看:Qwen2.5-VL-7B图文对话模型部署与使用全攻略
新手必看:Qwen2.5-VL-7B图文对话模型部署与使用全攻略 1. 环境准备与快速部署 1.1 镜像简介 Qwen2.5-VL-7B-Instruct-GPTQ是基于Qwen2.5-VL-7B-Instruct模型的GPTQ量化版本,专门用于图文对话任务。这个镜像已经预装了vllm推理框架和chainlit前端界面&…...
FireRedASR-AED-L语音识别模型WebUI快速部署教程:Python环境一键配置
FireRedASR-AED-L语音识别模型WebUI快速部署教程:Python环境一键配置 语音识别技术正在快速融入我们的日常开发,无论是做智能客服、会议纪要,还是内容审核,一个好用的识别模型都能省下大量时间。但很多朋友在第一步——环境部署上…...
Z-Image-Turbo-rinaiqiao-huiyewunv 模型微调实战:使用自定义数据集训练专属风格
Z-Image-Turbo-rinaiqiao-huiyewunv 模型微调实战:使用自定义数据集训练专属风格 想不想让AI画出专属于你的独特风格?比如,你是一位插画师,希望AI能学会你笔下那种温暖治愈的线条;或者你经营一个品牌,需要…...
DeepSeek-V3量化神优化:w4a8精度反超官方2.29%
DeepSeek-V3量化神优化:w4a8精度反超官方2.29% 【免费下载链接】DeepSeek-V3-0324-w4a8-mtp-QuaRot-per-channel 项目地址: https://ai.gitcode.com/Eco-Tech/DeepSeek-V3-0324-w4a8-mtp-QuaRot-per-channel 导语:国内大模型量化技术再获突破&am…...
OpenClaw性能优化:降低Qwen3-VL:30B多模态任务的Token消耗
OpenClaw性能优化:降低Qwen3-VL:30B多模态任务的Token消耗 1. 问题背景:多模态任务的高Token消耗困境 上周我在飞书群里测试OpenClaw对接Qwen3-VL:30B模型时,遇到了一个典型问题:当同事上传一张产品设计图要求分析时,…...
网盘下载加速工具:突破下载限制的直链提取技术详解
网盘下载加速工具:突破下载限制的直链提取技术详解 【免费下载链接】baiduyun 油猴脚本 - 一个免费开源的网盘下载助手 项目地址: https://gitcode.com/gh_mirrors/ba/baiduyun 你是否也曾遇到这样的情况:明明是自己辛苦上传的文件,下…...
Vite 8 架构革新:从双引擎到 Rolldown 统一打包的演进之路
1. Vite 8 架构革新的背景与痛点 如果你用过 Vite 7 或更早版本,一定对它的闪电般开发体验印象深刻。这主要得益于 Vite 独特的双引擎架构:开发时用 esbuild 实现毫秒级启动,生产环境则用 Rollup 保证打包质量。但我在实际项目中发现…...
FireRedASR-AED-L语音搜索应用:电商场景实战
FireRedASR-AED-L语音搜索应用:电商场景实战 1. 引言 想象一下这个场景:一位正在做饭的用户手上沾满面粉,突然想起需要购买烘焙材料,只需对着手机说"帮我找高筋面粉",下一秒就能看到精准的商品搜索结果。这…...
