如何捕获 ctrl-c 事件?
如何在 C++ 中捕获 Ctrl+C 事件?
How do I catch a Ctrl+C event in C++?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如何在 C++ 中捕获 Ctrl+C 事件?
How do I catch a Ctrl+C event in C++?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
signal
不是最可靠的方式,因为它的实现不同。我建议使用sigaction
。汤姆的代码现在看起来像这样:signal
isn't the most reliable way as it differs in implementations. I would recommend usingsigaction
. Tom's code would now look like this :对于 Windows 控制台应用程序,您需要使用 SetConsoleCtrlHandler 来处理 CTRL+C 和 CTRL+BREAK。
有关示例,请参阅此处。
For a Windows console app, you want to use SetConsoleCtrlHandler to handle CTRL+C and CTRL+BREAK.
See here for an example.
您必须捕获 SIGINT 信号 (我们正在谈论 POSIX,对吗?)
请参阅@Gab Royer 对 sigaction 的回答。
例子:
You have to catch the SIGINT signal (we are talking POSIX right?)
See @Gab Royer´s answer for sigaction.
Example:
是的,这是一个依赖于平台的问题。
如果您正在 POSIX 上编写控制台程序,
使用信号 API (
#include
)。在 WIN32 GUI 应用程序中,您应该处理
WM_KEYDOWN
消息。Yeah, this is a platform dependent question.
If you are writing a console program on POSIX,
use the signal API (
#include <signal.h>
).In a WIN32 GUI application you should handle the
WM_KEYDOWN
message.