[解決済み] パイプラインでstdoutを強制的にラインバッファリングする
2022-05-03 05:02:25
質問
通常は
stdout
はラインバッファリングされます。言い換えれば
printf
の引数が改行で終わっていれば、その行は即座に印刷されます。このことは、パイプを使って
tee
.
C++のプログラムを持っています。
a
文字列を出力するもので、常に
\n
-に、終端を
stdout
.
単体で実行される場合(
./a
) 、すべてが正しく、期待通りのタイミングでプリントされます。しかし、もしこれをパイプで
tee
(
./a | tee output.txt
を使うと、終了するまで何も表示されません。
tee
.
を追加すれば直るのは分かっている。
fflush(stdout)
C++プログラムの各印刷操作の後に。しかし、もっときれいで簡単な方法はないでしょうか?例えば、以下のようなコマンドを実行すれば、強制的に
stdout
は、パイプを使用している場合でもラインバッファリングされるのでしょうか?
解決方法は?
試す
unbuffer
の一部である
expect
パッケージで提供されます。すでにお持ちの方もいらっしゃるかもしれません。
あなたの場合、このように使うことになります。
./a | unbuffer -p tee output.txt
(
-p
はパイプラインモード用で、unbuffer が標準入力から読み込んで、残りの引数でコマンドに渡します)
関連
-
[解決済み] Bashで標準出力と標準エラーの両方をファイルにリダイレクトして追記する方法
-
[解決済み] 出力をファイルや標準出力にリダイレクトする方法
-
[解決済み] 標準出力ではなく標準エラー出力にパイプを通すにはどうしたらいいですか?
-
[解決済み] Windowsのcmdの標準出力と標準エラー出力を1つのファイルにリダイレクトする
-
[解決済み] Bashでstderrとstdoutをリダイレクトする [重複]。
-
[解決済み] less' で行番号を表示する方法 (GNU)
-
[解決済み] Unixでテキストファイルからあらかじめ決められた範囲の行を抽出するには?
-
[解決済み] 出力バッファリング無効化
-
[解決済み] ダッシュ/ハイフンで始まる文字列をgrepするにはどうしたらいいですか?
-
[解決済み] UNIXにおけるwall-clock-time, user-cpu-time, system-cpu-timeとは具体的にどのようなものですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] シンボリックリンクとハードリンクの違いは何ですか?
-
[解決済み] コマンドラインからdiffをカラー化する方法
-
[解決済み] ダッシュ/ハイフンで始まる文字列をgrepするにはどうしたらいいですか?
-
[解決済み】Crontab - ディレクトリで実行する
-
[解決済み] Unixの「ls」による名前順ソート
-
[解決済み] シェルスクリプトにヘルプメソッドを追加するにはどうすればよいですか?
-
[解決済み] パイプラインでstdoutを強制的にラインバッファリングする
-
[解決済み] シェルスクリプト - <date>以降に変更されたすべてのファイルを取得します。
-
[解決済み] sed または awk: パターンに従って n 行を削除する
-
[解決済み] 多くのファイルを含む2つのフォルダの内容を比較する