Windows:在控制台程序中注入CTRL+C中断

一、引言

当你的控制台程序是一个循环执行Task的任务体时,我们有时候会需要为程序增加强制的中断指令,譬如CTRL+C.
先不说解决方法,如果让你去实现,阁下将如何破解。
思路自然很简单,我们可以在程序中捕获鼠标事件,判断同时按下CTRL+C,然后让程序退出就行。
但是,我们下面给到的方法,是windows已经为我们封装好的Hook接口 SetConsoleCtrlHandler,其底层实现逻辑其实与我们所想的也是一致的啦。

二、解决方法

#include <iostream>
#include <Windows.h>BOOL WINAPI ConsoleCtrlHandler(DWORD ctrlType) {if (ctrlType == CTRL_C_EVENT) {std::cout << "CTRL+C received. Exiting..." << std::endl; // 执行相应的操作return TRUE;}return FALSE;
}int main() {if (!SetConsoleCtrlHandler(ConsoleCtrlHandler, TRUE)) {std::cerr << "Error setting control handler" << std::endl;return 1;}// 模拟程序运行while (true) {// 程序主循环}return 0;
}

三、总结

方法很简单,不过需要注意的是,hook到程序中断信号时,记得相关资源的释放等,笔者不做过多介绍,简略说说。对于循环任务,我们一般会设置一个Flag,中断时让循环自动break退出,然后紧接着释放资源,让一切回到鸿蒙初开的状态~

真男人,不仅要进退自如,还要懂得优雅的停下~ —— 来自笔者

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

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

相关文章

国内加密软件排行榜,每一款加密软件都是精品

在数字化快速发展的今天&#xff0c;数据安全和隐私保护已成为企业和个人关注的焦点。加密软件作为保护数据安全的重要手段&#xff0c;其重要性日益凸显。以下是根据权威机构的评测和用户反馈&#xff0c;整理的国内加密软件排行榜及其特点概述。 1、加密软件安企神免费试用7天…

web前端海报:深入探索其设计、技术与实现

web前端海报&#xff1a;深入探索其设计、技术与实现 Web前端海报&#xff0c;作为数字化时代的一种重要宣传手段&#xff0c;以其独特的视觉效果和交互体验&#xff0c;逐渐成为了各类活动、品牌和产品推广的必备利器。本文将围绕web前端海报的设计、技术与实现&#xff0c;从…

贷款借钱平台 小额贷款系统开发小额贷款源码 贷款平台开发搭建

这款是贷款平台源码/卡卡贷源码/小贷源码/完美版 后台51800 密码51800 数据库替换application/database.php程序采用PHPMySQL&#xff0c;thinkphp框架代码开源&#xff0c;不加密后台效果&#xff1a;手机版效果 这款是贷款平台源码/卡卡贷源码/小贷源码/完美版 后台51800 密码…

LeetCode第399场周赛c++题解

3164.优质数对的总数II 给你两个整数数组 nums1 和 nums2&#xff0c;长度分别为 n 和 m。同时给你一个正整数 k。 如果 nums1[i] 可以被 nums2[j] * k 整除&#xff0c;则称数对 (i, j) 为 优质数对&#xff08;0 < i < n - 1, 0 < j < m - 1&#xff09;。 返…

《web应用技术》第九次作业

一、将前面的代码继续完善功能 1.采用XML映射文件的形式来映射sql语句&#xff1b; <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis…

HiWoo Box工业智能网关

随着工业4.0的浪潮席卷全球&#xff0c;智能化、网络化已成为工业发展的必然趋势。在这个时代&#xff0c;工业智能网关成为了连接工业设备与网络的关键节点&#xff0c;扮演着至关重要的角色。HiWoo Box作为一款工业智能网关&#xff0c;以其卓越的性能和广泛的应用场景&#…

人生建议:向猫学习

心安理得地被爱 猫从不担心自己不配得到爱&#xff0c;也正是这幅理所应当、宠辱不惊的样子&#xff0c;让人欲罢不能。或许 当你相信自己值得世界上最好的爱时&#xff0c;你就会拥有。 多晒太阳多睡觉 猫喜欢睡觉&#xff0c;尤其喜欢躺阳光好的地方。阳光和睡眠&#xff0c…

2024-05-29 精神分析-孤独感-分析

摘要: 所谓的孤独感是种很笼统的感觉&#xff0c;可能包含了很多种不同的情绪。 比如&#xff0c;希望和他人建立联系&#xff0c;消除敌意&#xff0c;对他人愧疚&#xff0c;想要从他人那里获取关爱或者其他&#xff0c;也可能是感觉到自己的脆弱和无助&#xff0c;希望获得…

系统架构设计师【第3章】: 信息系统基础知识 (核心总结)

文章目录 3.1 信息系统概述3.1.1 信息系统的定义3.1.2 信息系统的发展3.1.3 信息系统的分类3.1.4 信息系统的生命周期3.1.5 信息系统建设原则3.1.6 信息系统开发方法 3.2 业务处理系统&#xff08;TPS&#xff09;3.2.1 业务处理系统的概念3.2.2 业务处理系统的功能 …

c++(六)

c&#xff08;六&#xff09; 多态概念在c中是如何实现多态静态多态&#xff08;绑定&#xff09;动态多态&#xff08;绑定&#xff09; 动态多态的实现原理动态内存分配中遇到的问题 重载、重定义、重写的区别抽象类接口类---抽象类空类对象的内存大小explicitfinal修饰类修饰…

软件游戏缺失d3dcompiler_47.dll如何解决,简单有效的五种解决方法分享

在现代游戏中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“缺少d3dcompiler47.dll文件”。这个问题通常会导致游戏无法正常运行或出现崩溃的情况。为了解决这个问题&#xff0c;我总结出了以下五种解决方法。希望这些方法能够帮助到遇到相同问题的玩家。 …

web刷题记录(1)

[GXYCTF 2019]Ping Ping Ping 进入页面&#xff0c;发现有一个传入参数的框&#xff0c;目的就是为了让我们通过参数传入内容来执行代码。这里先传入本地ip&#xff0c;方便后面的ping命令运行 ls命令来查看&#xff0c;目录中的文件 传入后&#xff0c;发现目录下有flag.php,…

消息队列RabbitMQ简介及应用场景

RabbitMQ是一个开源的消息代理和队列服务器&#xff0c;它实现了高级消息队列协议&#xff08;AMQP&#xff09;。RabbitMQ的主要特点包括高性能、健壮性、可伸缩性和易用性。它使用Erlang语言编写&#xff0c;支持跨多种语言和平台&#xff0c;如Java、.NET、Ruby、PHP、Pytho…

倍福TwinCAT3 PLC编程软件下载安装

1、哪里下载TwinCAT3 链接: Search result | 倍福 中国https://www.beckhoff.com.cn/zh-cn/support/download-finder/search-result/?download_group=97028248下载倍福PLC编程软件需要注册,大家可以提前注册,注册好后就可以开始愉快的下载了 安装前需要注意将各杀毒软件卸…

单链表经典算法题理解

目录 1. 前言&#xff1a; 2. 移除链表元素 3. 反转链表 4. 合并两个有序链表 5. 链表的中间节点 6. 环形链表的约瑟夫问题 7. 分割链表 1. 前言&#xff1a; 当我们学习了单链表之后&#xff0c;我能可以尝试的刷一下题了&#xff0c;以下分享一下几道题的解法 2. 移…

7-zip工具?这么好用的你都能找到!

关于7-Zip&#xff0c;这不是一个神奇的小工具吗&#xff1f;让我悄悄告诉你&#xff0c;它其实是个压缩界的隐形冠军哦。 想象一下&#xff0c;你下载了一堆文件&#xff0c;电脑空间却告急&#xff0c;这时候7-Zip就像你的小助手&#xff0c;帮你把文件们“瘦身”&#xff0…

【网络运维的重要性】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

阿里智能信息数据挖掘复盘

&#xff08;嘻嘻——不嘻嘻&#xff09; 挫败呜呜呜&#xff0c;钉钉忘装&#xff0c;还要手机登录&#xff0c;迟到三分钟。 一上来就问项目&#xff0c;没有自我介绍。 第一篇的重要特征是什么直接忘记&#xff0c;正负样本比&#xff0c;过拟合的判断标准&#xff0c;特…

Session + JWT + Cookie

00&#xff1a;HTTP无状态&#xff08;为了保持状态&#xff0c;前端好麻烦&#xff0c;又要自己存&#xff0c;又要想办法带出去&#xff0c;于是使用cookie&#xff09; 01&#xff1a;Cookie 将用户信息&#xff0c;在每次请求时候 带给后端&#xff08;但是自己存储大小有…

期权与股票在交易上是有什么区别吗?

国内的股票市场&#xff0c;只能做多&#xff0c;T1交易。期权则分为4个方向&#xff0c;买入看涨期权&#xff0c;买入看跌期权&#xff0c;也就是做多和做空T0双向交易&#xff0c;同时每个方向还区分不同的行权价&#xff0c;每个行权价对应的4个方向的期权&#xff0c;都有…