我正在创建一个程序,如果按下任何键,我想退出该程序。 到目前为止,我只能在按下返回时才这样做,它会发生,因为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);
}
答案 0 :(得分:3)
(我将问题从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;
}