呪いプログラムへのパイプ入力

呪いプログラムへのパイプ入力

ncurses ライブラリは対話型のユーザーインターフェイスを提供します。ところで、プログラムに何かを入力するとどうなるか知りたいです。だから私はこれを試してみます:

# echo foo | my_curses_prog

常に標準入力に保留中の入力があるようですが、getch何も読み取れません。それでは、後ろから何が起こっているのでしょうか?


更新されたテストプログラム:

#include <ncurses.h>

int main()
{
    WINDOW *win = initscr();
    nodelay(win, 0);
    refresh();
    FILE *fp = fopen("my_curses_prog.log", "w");
    while (1) {
        int ch = getch();
        fprintf(fp, "%d\n", ch);
        fflush(fp);
    }
    fclose(fp);
    endwin();
    return 0;
}

答え1

呪いアプリケーションを使用して初期化できます。initscrまたはnewterm。前者は読む標準入力後者だけが別の入力を使用するように指示することができます。呪いアプリケーションがパイプからデータを読み取るようにするには、次のようにします。newterm会話これを行う)。

呪いは、入力が次のようになると予想します。端末。パイプはバッファリングされており、他のものに変更できないため、端末のようには機能しません。オリジナルモード使用標準端子I/O着信電話。入力は次のようにバッファリング、役に立つことが多いことがわかりませんgetchバッファ全体が読み取れるまで(テスト方法に応じて多くの文字または改行文字まで)。

関連情報