如何打印终止到这个程序

How to print termination to this program?

本文关键字:程序 终止 何打印 打印      更新时间:2023-10-16

我有一个这样的代码:

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;
}