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

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运算符用于根据一个以上的条件过滤记录&#xff0c;即用于组合多个条件以缩小SQL语句中的数据。 WHERE子句可以与AND&#xff0c;OR和NOT运算符结合使用。 AND和OR运算符用于根据多个条件筛选记录&#xff1a; 如果由AND分隔的所有条件为TR…...

Python网络编程之Socket(套接字)

文章目录 一、Socket概念二、套接字的发展史及分类三、Socket的使用语法格式(基于TCP协议)1.基于TCP协议的套接字(socket)编程半连接池 2.基于UDP协议的套接字(socket)编程也可以使用服务端只接收客户端消息 黏包现象 一、Socket概念 Socket套接字&#xff0c;一种独立于协议的…...

金山终端安全系统V9.0 SQL注入漏洞复现

0x01 产品简介 金山终端安全系统是一款为企业提供终端防护的安全产品&#xff0c;针对恶意软件、病毒和外部攻击提供防范措施&#xff0c;帮助维护企业数据和网络。 0x02 漏洞概述 金山终端安全系统V9.0 /inter/update_software_info_v2.php页面存在sql注入漏洞&#xff0c;该…...

Radius OTP完成堡垒机登录认证 安当加密

Radius OTP&#xff08;One-Time Password&#xff09;是一种用于身份验证的协议&#xff0c;它通过向用户发送一个一次性密码来验证用户的身份。使用Radius OTP可以实现堡垒机登录&#xff0c;以下是一些实现步骤&#xff1a; 1、安装Radius服务器 首先需要安装Radius服务器…...

ROS opencv 人脸识别

人脸识别需要在输入的图像中确定人脸&#xff08;如果存在&#xff09;的位置、大小和姿态&#xff0c;往往用于生物特征识别、视频监听、人机交互等应用中。2001年&#xff0c;Viola和Jones提出了基于Haar特征的级联分类器对象检测算法&#xff0c;并在2002年由Lienhart和Mayd…...

文心一言 4.0 ERNIE-Bot 4.0 :ERNIE-Bot 4.0 大模型深度测试体验报告

本心、输入输出、结果 文章目录 文心一言 4.0 ERNIE-Bot 4.0 &#xff1a;ERNIE-Bot 4.0 大模型深度测试体验报告前言相关跳转文心一言 4.0 ERNIE-Bot 4.0 接口简介Bash 请求示例代码Windows 模式使用 Python 请求如果直接使用官方提供的代码文心一言 4.0 ERNIE-Bot 4.0 API 在…...

华为OD机考B卷 | 100分】阿里巴巴找黄金宝箱(JAVA题解——也许是全网最详)

前言 本人是算法小白&#xff0c;甚至也没有做过Leetcode。所以&#xff0c;我相信【同为菜鸡的我更能理解作为菜鸡的你们的痛点】。 题干 1. 题目描述 一贫如洗的樵夫阿里巴巴在去砍柴的路上&#xff0c;无意中发现了强盗集团的藏宝地&#xff0c;藏宝地有编号从0~N的箱子&…...

请求转发和重定向区别

两者区别&#xff1a; 1.转发在一次请求中完成&#xff0c;重定向是两次请求 2.转发操作发生在服务器内部&#xff0c;重定向是在浏览器执行操作 3.转发地址栏不变&#xff0c;重定向地址栏变化&#xff08;两次请求&#xff0c;两个地址&#xff09; 4.转发可以在一次请求中共…...

JS如何判断对象为空?以及各自的缺点。

JS如何判断对象为空&#xff1f;以及各自的缺点。 Object.keys() 通过 Object.keys() 来获取对象的键进行判断。 function isEmpty(obj) {return Object.keys(obj).length 0; }console.log(isEmpty({})); // true console.log(isEmpty({ a: 1 })); // false缺点&#xff1a…...

同城代驾开源版小程序开发

同城代驾开源版小程序开发 功能特性描述&#xff1a; 定价模式&#xff1a;本系统支持灵活的计价模式&#xff0c;包括白天和夜晚的起步价、起步里程、每公里价以及超时费用&#xff0c;从而满足不同时段的定价需求。 实时路径计算&#xff1a;通过集成腾讯地图的软件开发工…...

【Python机器学习】零基础掌握ShrunkCovariance协方差估计

有没有想过如何准确地评估股票投资的风险? 在投资领域,了解各种资产(如股票、债券等)之间的相关性和波动性是非常重要的。常用的方法是计算资产收益率的协方差矩阵,但这个矩阵在样本量少或数据质量不高的情况下可能会产生误导。那么,有没有更好的方法来解决这个问题呢?…...

精神科常用评估量表汇总,建议收藏!

根据精神科医生的量表使用情况&#xff0c;笔者整理了10个精神科常用量表&#xff0c;可在线评测直接出结果&#xff0c;可转发使用&#xff0c;可生成二维码使用&#xff0c;可创建项目进行数据管理&#xff0c;有需要的小伙伴赶紧收藏&#xff01; 抑郁自评量表 抑郁自评量表…...

Python之切片

Python之切片 切片 通过给定的索引区间获得线性结构的一部分数据start、stop、step为整数&#xff0c;可以是正整数、负整数、零start为0时&#xff0c;可以省略stop为末尾时&#xff0c;可以省略step为1时&#xff0c;可以省略切片时&#xff0c;索引超过上界(右边界)&#…...

OpenCV显示中文(python)

OpenCV添加文字的方法putText(…)&#xff0c;添加英文是没有问题的&#xff0c;但如果你要添加中文就会出现“&#xff1f;&#xff1f;&#xff1f;”的乱码&#xff0c;需要特殊处理一下。 下文提供封装好的&#xff08;代码&#xff09;方法&#xff0c;供OpenCV添加中文使…...

k8s-18 认证授权

Authentication (认证) 认证方式现共有8种&#xff0c;可以启用一种或多种认证方式&#xff0c;只要有一种认证方式通过&#xff0c;就不再进行其它方式的认证。通常启用X509 Client Certs和Service Accout Tokens两种认证方式 Kubernetes集群有两类用户:由Kubernetes管理的Ser…...

WebAPI+EF连接SQL Server数据库

右击解决方案-添加-新建项目-选择“类库&#xff08;.NET Framework&#xff09;”,新建的项目取名叫WebApi1.EF 添加EF&#xff1a; 新建一个ADO实体数据模型 选择DBFirst 数据源选择MySql 填写数据库地址及账号密码 选择实体框架版本 选择在数据库中的表User 到此配置完成&am…...

maven-plugin-shade 详解1

maven-plugin-shade 是 Maven 的一个插件&#xff0c;它的作用是将多个 jar 包合并成一个 jar&#xff0c;同时将其中的依赖关系也合并到该 jar 中。这个插件常用于创建可执行 jar 包和打包 web 应用程序。 下面是 maven-plugin-shade 的一些常用配置&#xff1a; 打包的形式&…...

C#中LinkedList、Queue<T>和Stack<T>的使用

1、LinkedList(链表) 链表中元素存储内存中是不连续分配&#xff0c;每个元素都有记录前后节点&#xff0c;节点值可以重复&#xff0c;不能通过下标访问&#xff0c;泛型的使用保证类型安全&#xff0c;可以避免装箱拆箱&#xff0c;找元素就只能遍历&#xff0c;查找不方便&…...

流程图如何制作?好用的11款流程图软件盘点!

流程图是一种强大的可视化工具&#xff0c;用于清晰地展示各种过程和步骤&#xff0c;应用非常广泛&#xff0c;在各个行业中随处可见&#xff0c;凡是涉及流程步骤的场景&#xff0c;都可以用到流程图&#xff0c;那么问题来了&#xff1a;流程图如何制作&#xff1f; 这篇文…...

Git内部原理浅析:对象、引用与分支合并策略

Git内部原理浅析&#xff1a;对象、引用与分支合并策略 在软件开发中&#xff0c;Git已成为版本控制系统的标准工具&#xff0c;但其强大的功能背后隐藏着精妙的设计原理。理解Git的内部机制&#xff0c;尤其是对象模型、引用系统以及分支合并策略&#xff0c;不仅能提升开发效…...

LVGL模拟器不止能看Demo:在Ubuntu里用VSCode调试和修改官方例程的实战技巧

LVGL模拟器深度开发指南&#xff1a;在Ubuntu与VSCode中实现高效UI调试 当你在嵌入式设备上开发LVGL界面时&#xff0c;是否经历过反复烧录、调试的漫长等待&#xff1f;模拟器开发可以彻底改变这种低效的工作流程。本文将带你超越简单的Demo演示&#xff0c;探索如何将LVGL模…...

新手必看:Qwen2.5-VL-7B图文对话模型部署与使用全攻略

新手必看&#xff1a;Qwen2.5-VL-7B图文对话模型部署与使用全攻略 1. 环境准备与快速部署 1.1 镜像简介 Qwen2.5-VL-7B-Instruct-GPTQ是基于Qwen2.5-VL-7B-Instruct模型的GPTQ量化版本&#xff0c;专门用于图文对话任务。这个镜像已经预装了vllm推理框架和chainlit前端界面&…...

FireRedASR-AED-L语音识别模型WebUI快速部署教程:Python环境一键配置

FireRedASR-AED-L语音识别模型WebUI快速部署教程&#xff1a;Python环境一键配置 语音识别技术正在快速融入我们的日常开发&#xff0c;无论是做智能客服、会议纪要&#xff0c;还是内容审核&#xff0c;一个好用的识别模型都能省下大量时间。但很多朋友在第一步——环境部署上…...

Z-Image-Turbo-rinaiqiao-huiyewunv 模型微调实战:使用自定义数据集训练专属风格

Z-Image-Turbo-rinaiqiao-huiyewunv 模型微调实战&#xff1a;使用自定义数据集训练专属风格 想不想让AI画出专属于你的独特风格&#xff1f;比如&#xff0c;你是一位插画师&#xff0c;希望AI能学会你笔下那种温暖治愈的线条&#xff1b;或者你经营一个品牌&#xff0c;需要…...

DeepSeek-V3量化神优化:w4a8精度反超官方2.29%

DeepSeek-V3量化神优化&#xff1a;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 导语&#xff1a;国内大模型量化技术再获突破&am…...

OpenClaw性能优化:降低Qwen3-VL:30B多模态任务的Token消耗

OpenClaw性能优化&#xff1a;降低Qwen3-VL:30B多模态任务的Token消耗 1. 问题背景&#xff1a;多模态任务的高Token消耗困境 上周我在飞书群里测试OpenClaw对接Qwen3-VL:30B模型时&#xff0c;遇到了一个典型问题&#xff1a;当同事上传一张产品设计图要求分析时&#xff0c…...

网盘下载加速工具:突破下载限制的直链提取技术详解

网盘下载加速工具&#xff1a;突破下载限制的直链提取技术详解 【免费下载链接】baiduyun 油猴脚本 - 一个免费开源的网盘下载助手 项目地址: https://gitcode.com/gh_mirrors/ba/baiduyun 你是否也曾遇到这样的情况&#xff1a;明明是自己辛苦上传的文件&#xff0c;下…...

Vite 8 架构革新:从双引擎到 Rolldown 统一打包的演进之路

1. Vite 8 架构革新的背景与痛点 如果你用过 Vite 7 或更早版本&#xff0c;一定对它的闪电般开发体验印象深刻。这主要得益于 Vite 独特的双引擎架构&#xff1a;开发时用 esbuild 实现毫秒级启动&#xff0c;生产环境则用 Rollup 保证打包质量。但我在实际项目中发现&#xf…...

FireRedASR-AED-L语音搜索应用:电商场景实战

FireRedASR-AED-L语音搜索应用&#xff1a;电商场景实战 1. 引言 想象一下这个场景&#xff1a;一位正在做饭的用户手上沾满面粉&#xff0c;突然想起需要购买烘焙材料&#xff0c;只需对着手机说"帮我找高筋面粉"&#xff0c;下一秒就能看到精准的商品搜索结果。这…...