c++ - 如果我得到任何字符,则退出程序

标签 c++ terminal getchar

我正在创建一个程序,如果按下任何键,我想退出该程序。 到目前为止,我只能在按下回车键时执行此操作,因为 getch 需要按下回车键。

代码:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
static void * breakonret(void *instance);
int main(){
  pthread_t mthread;
  pthread_create(&mthread, NULL, breakonret, NULL);
  while(1){
    printf("Data on screen\n");
    sleep(1);
  }
}
static void * breakonret(void *instance){
  getchar();
  exit(0);
}

最佳答案

(我将问题从 getch 重新标记为 getchar,因为它们是两个不同的东西)。

正如您所注意到的,getchar返回之前等待按下返回键。如果您希望它在按下任意键后立即返回,则需要使用不同的函数。在 Windows 上,有一个名为 getch() 的内置函数。这是在 <conio.h> 中定义的。在 POSIX 平台(例如 Linux、OS X)上,没有内置 getch() ,但您可以像这样编写自己的版本(来自 http://cboard.cprogramming.com/faq-board/27714-faq-there-getch-conio-equivalent-linux-unix.html ):

#include <termios.h>

int getch( ) 
{
  struct termios oldt,
                 newt;
  int            ch;
  tcgetattr( STDIN_FILENO, &oldt );
  newt = oldt;
  newt.c_lflag &= ~( ICANON | ECHO );
  tcsetattr( STDIN_FILENO, TCSANOW, &newt );
  ch = getchar();
  tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
  return ch;
}

关于c++ - 如果我得到任何字符,则退出程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10610555/

相关文章:

c++ - 对于具有一维常量的二维数组,使用 delete [] 进行内存释放

python - 如何增加 Paramiko SSH 客户端上的向后滚动缓冲区?

ruby 清屏

c - 为什么 putchar() 打印出带有 "%"符号的字符?

c - (练习 1.6 K&R)如何验证 getchar() != EOF 是 0 还是 1?

c++ - Eclipse CDT 包含文件夹

c++ - 如何使用 for_each 获取 vector 中值的索引?

c++ - 为什么在此示例中必须使用 emplace_back move ?

bash - Ansi 扩展颜色索引中颜色的 RGB 值 (17-255)

c - 使用 getchar 输入字符串