簡潔なバージョン
>
テキストが上に流れても、ユーザーが入力できるように、端末の下部に入力記号(たとえば)を保持できますか?
長いバージョン
私は基本的にテキストストリーミングを処理するマルチプロセスアプリケーションを作成しています(近い将来、入出力にTelnetを使用する予定です)。私はprintfを使って>
ユーザーに書くことができることを知らせるプロンプト記号を入れました。しかし、一部の子供が前の入力に少し遅れて応答すると、プロンプトの後に出力が書き込まれるため、技術的にはまだ機能しますが、実用的ではありません。
テキストが「スクロール」しても空白行を保持して入力するように求める方法はありますか?
答え1
すべての出力ストリームを直列化するラッパーオブジェクトを作成できます。同期にはミューテックスが必要な場合があります。
その後、各子プロセスの出力後に「>」を印刷して、最後の行が常に「>」になるようにすることができます。
答え2
「常に最新の出力行の後にプロンプト行を保持します」の非常に単純なバージョンの場合は、常に出力と同じ操作を実行できます"\routput here\n> "
(最も最近のプロンプト行を上書きして出力を書き、新しいプロンプト行を書き込みます)。ユーザーが新しい出力ラインで入力を維持できるようにするには、readline
/などの操作を実行する必要がありますlibedit
。 (実際にこれを行うオプションがあるかもしれません。わかりません。)一般的なプロセスは、cbreak / rawモードに移動してユーザー入力のメモリバッファを維持し、新しい出力ラインを作成するたびにそれを出力することです。 。メッセージが表示されたら、もう一度やり直してください。