如果我得到任何字符,请退出程序

Exit program if i get any char

本文关键字:退出程序 字符 任何 如果      更新时间:2023-10-16

我正在创建一个程序,如果我按下任何键,我想退出该程序。到目前为止,我只能在按下返回时执行此操作,它会发生,因为 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 screenn");
    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;
}