出力トラフィックはタイムリーに維持されますが、

出力トラフィックはタイムリーに維持されますが、

簡潔なバージョン

>テキストが上に流れても、ユーザーが入力できるように、端末の下部に入力記号(たとえば)を保持できますか?

長いバージョン

私は基本的にテキストストリーミングを処理するマルチプロセスアプリケーションを作成しています(近い将来、入出力にTelnetを使用する予定です)。私はprintfを使って>ユーザーに書くことができることを知らせるプロンプト記号を入れました。しかし、一部の子供が前の入力に少し遅れて応答すると、プロンプトの後に出力が書き込まれるため、技術的にはまだ機能しますが、実用的ではありません。

テキストが「スクロール」しても空白行を保持して入力するように求める方法はありますか?

答え1

すべての出力ストリームを直列化するラッパーオブジェクトを作成できます。同期にはミューテックスが必要な場合があります。

その後、各子プロセスの出力後に「>」を印刷して、最後の行が常に「>」になるようにすることができます。

答え2

「常に最新の出力行の後にプロンプ​​ト行を保持します」の非常に単純なバージョンの場合は、常に出力と同じ操作を実行できます"\routput here\n> "(最も最近のプロンプト行を上書きして出力を書き、新しいプロンプト行を書き込みます)。ユーザーが新しい出力ラインで入力を維持できるようにするには、readline/などの操作を実行する必要がありますlibedit。 (実際にこれを行うオプションがあるかもしれません。わかりません。)一般的なプロセスは、cbreak / rawモードに移動してユーザー入力のメモリバッファを維持し、新しい出力ラインを作成するたびにそれを出力することです。 。メッセージが表示されたら、もう一度やり直してください。

関連情報