私は Ubuntu Linux 12.04 を使用しており、ncurses を使用するプログラムを作成しています。私のプログラムには、下位プロセスを実行するオプションがあります (「シェル エスケープ」)。私が行う従属プロセスを作成する前に
reset_shell_mode( );
putp( exit_ca_mode ); // From <term.h>
次に、下位プロセスが終了すると、curses の表示を次のように復元します。
putp( enter_ca_mode ); // From <term.h>
reset_prog_mode( );
refresh( );
これはうまくいきます。ただし、私のプログラムは、下位プロセスを起動する直前にいくつかの情報も出力したいと考えています。また、下位プロセスが終了するとき、完全な curses 表示に戻る前に、いくつかの追加情報を出力したいと考えています。したがって、私は(省略):
reset_shell_mode( );
putp( exit_ca_mode );
printf( "Don't forget... blah, blah\n" );
system( external_command );
printf( "Updating, etc\n" );
putp( enter_ca_mode );
reset_prog_mode( );
refresh( );
問題は、system() の呼び出しの直前と直後にプログラムによって生成されたテキストが表示されないことです。おそらく、curses 関連のバッファーにまだ入っていると思います。知らない。
親プロセスを子プロセスだけでなく端末にも出力するにはどうすればよいですか?