2

プログラムを作成していて、何かキーが押されたらプログラムを終了したいです。これまでのところ、リターンが押された場合にのみそれを行うことができます。これは、ゲッチがリターンを押す必要があるためです。

コード:

#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);
}
4

1 に答える 1

3

(これらは2つの異なるものであるため、質問にタグを付け直しましたgetch) 。getchar

お気づきのようgetcharに、戻る前に戻るが押されるのを待ちます。いずれかのキーが押されたらすぐに戻りたい場合は、別の関数を使用する必要があります。getch()Windows では、で定義されている組み込み関数が呼び出され、それを実行し<conio.h>ます。POSIX プラットフォーム (Linux、OS X など) には builtin はありませんgetch()が、次のように独自のバージョンを作成できます ( http://cboard.cprogramming.com/faq-board/27714-faq-there-getch-conioから)。 -同等の 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;
}
于 2012-05-16T00:32:11.907 に答える