2012-01-27 5 views
0

を続ける:キーボードからの入力を受信するために一定時間待機がそうでない場合、私はちょうどUbuntuの上のCで、このアルゴリズムを実装したかった

待ち、そう、時間の経過によって可能な入力またはを取得することにより、プログラムを続行する必要があります。

私はそれを行う手掛かりを持っていません! ありがとうございます。

+0

http://stackoverflow.com/questions/1513734/problem-with-kbhitand-getch-for-linux –

+0

また、HTTPを参照してください。 //stackoverflow.com/questions/6839508/test-if-stdin-has-input-for-c-windows-and-or-linux/6839581#6839581 – Antti

答えて

0

alarm()およびsignal()機能のマニュアルを参照してください。スレッドやプロセスを使用せずにコードを簡単にタイムアウトすることができます。

+0

まずはお返事ありがとうございます。私は両方のソリューションでプログラムの実行が待機状態になると思います。しかし、私のプログラムは、4秒ごとにリフレッシュしなければならないグラフィックを持っています。このリフレッシュによって、ユーザーはキーを入力することができます。したがって、画面はリフレッシュされ、ユーザーのインパクトを示します。 – miryani

0

それを行うための一般的な方法は、select()またはpoll()である:

struct pollfd fd = {STDIN_FILENO, POLLIN}; 
switch(poll(&fd, 1, 1)){ 
case -1: 
    die("poll failed"); 
    break; 
case 0: 
    //timed out... 
    break; 
default: 
    //read from stdin 
}  
+0

まずはお返事ありがとうございます。 私は、両方のソリューションで、プログラムの実行が待機状態になると思います。しかし、私のプログラムは、4秒ごとにリフレッシュしなければならないグラフィックを持っています。このリフレッシュによって、ユーザーはキーを入力することができます。したがって、画面はリフレッシュされ、ユーザーのインパクトを示します。 – miryani

+0

だから 'O_NONBLOCK'を見てください – Dave

関連する問題