如何打印终止到这个程序
How to print termination to this program?
我有一个这样的代码:
int main()
{
int x=0;
std::cout<<"Enter numbers"<<std::endl;
while(std::cin>>x)
{
std::cout<<"Number entered: "<<x<<std::endl;
}
return 0;
}
当我按下ctrl+c
时,代码终止。我想打印类似于"程序终止,因为按下了ctrl+c
"的东西。我知道异常处理是一种方法。但还有其他选择吗?顺便说一下,我的操作系统是linux。
不,异常处理与此无关。
需要使用sigaction(2)为SIGINT
信号安装信号处理程序。请注意,信号处理是异步的,而且大多数c++库类和函数都不可重入,因此信号处理程序所能做的事情相当有限。它不能接触std::cout
,它做不了什么。在使用_exit()
结束之前,它可以安全地做的唯一一件事就是使用write系统调用将一个罐装消息写入标准输出。
可以使用linux特定的信号文件描述符以一种安全的方式处理信号,允许使用c++库
在linux中,您可以捕获信号SIGINT(当您按CTRL+C时发出此信号),一个小示例:
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
/* procedure signal SIGINT */
static void sigint_handler (int signo)
{
printf ("signal SIGINT!n");
exit (EXIT_SUCCESS);
}
int main (void)
{
if (signal (SIGINT, sigint_handler) == SIG_ERR)
{
fprintf (stderr, "Error in SIGINT!n");
exit (EXIT_FAILURE);
}
for (;;)
pause ( );
return 0;
}
相关文章:
- 声明一个变量,该变量在 c++ 或 c 中具有值,当程序终止时不会被销毁
- 程序终止时调用函数
- 当主终端关闭时,程序终止
- 程序终止,状态为 -1073741510 在 for 循环的中间,将输入分配给二维数组
- 条件运算符不允许程序终止
- 尝试对对象数组进行排序时程序终止
- 程序终止索引外部
- 程序终止,而不是继续整数输入验证循环
- 程序终止时堆栈损坏?
- 如何使用unique_ptr声明调用构造函数并处理程序终止信号
- 使用 ASSERT_DEATH 时,有没有办法在应用程序终止后自动继续执行所有测试
- C++输入超过 11 个整数时程序终止
- 程序终止:使用向量集的向量
- 我该如何验证给定类的每个实例都被应用程序终止所破坏
- 程序终止时,仪器不会捕获未删除对象
- C程序终止
- 正确关闭应用程序:终止程序的替代方案
- 程序终止C++时访问冲突
- 我需要循环这个,并在给出字符串 -1 时让程序终止
- 绑定错误 98 "Address in use"应用程序终止后仍然存在