3

次の C プログラムを理解しようとしています。

#include <curses.h> 

int main() {
    int i; 
    initscr(); 
    halfdelay(5);
    for (i=0; i < 5; i++) 
        getch(); 
    endwin();
}

しかし、私はそれを理解することはできません。initscr()現在の画面の初期化を理解してgetch()おり、現在の端末のロックを解除するためのユーザー入力を待っていますが、halfdelay()ここでループと達成は何ですか?

4

2 に答える 2

6

halfdelay(n);ユーザーが何かを入力するのを関数が 10 分の 1 秒 (サンプル プログラムでは 0.5 秒)getch待機する入力モードを設定します。は、タイマーが経過しない限りキー押下を返します。タイマーが経過した場合は を返します。このモードは、またはで再びオフにすることができます。ngetchERRcbreak()nocbreak()

これは、たとえば、ユーザーに確認を求めるコードで使用できますが、ユーザーが特定の時間枠内に応答しない場合、デフォルトで何らかの値が設定されます。

于 2011-02-22T11:43:09.803 に答える
0

halfdelay は、ユーザーの非アクティブ状態を 50 秒間チェックする文字のバッファリングを無効にするために使用されます。

このサンプルは、ユーザー入力から 5 文字を読み取ります。ユーザーが 50 秒間アクティブでない場合、getch は EINTR に設定された errno で ERR を返します。

あちらこちら詳細をご覧ください

于 2011-02-22T11:42:31.067 に答える