ホームページ > バックエンド開発 > Golang > シェルコマンドの出力 (stdout、stderr) をバッファリングしないようにするにはどうすればよいですか?

シェルコマンドの出力 (stdout、stderr) をバッファリングしないようにするにはどうすればよいですか?

王林
リリース: 2024-02-06 09:12:10
転載
1259 人が閲覧しました

如何使任何 shell 命令的输出(stdout、stderr)不缓冲?

質問内容

出力バッファリングを行わずにシェルコマンドを実行する方法はありますか?

たとえば、hexdump file | ./my_script は、hexdump からの入力を 1 行ずつではなく、バッファリングされたチャンクで my_script に渡すだけです。

コマンドの出力をバッファリングしないようにするための一般的な解決策は何ですか?


正解


私の知る限り、醜いハックなしではこれを行うことはできません。パイプへの書き込み (またはパイプからの読み取り) は、完全なバッファリングを自動的にオンにします。これについては何もできません:-(。「行バッファリング」(これが必要なものです) は、ターミナルへの読み取り/書き込み時にのみ使用されます。醜いハッキング まさにこれが何をしているのか: プログラムを疑似端末に接続し、パイプライン内の他のツールがラインバッファモードでその端末から読み書きできるようにします。問題全体は次のように説明されます:

このページには、unbuffer を使用するか、LD_PRELOAD を使用していくつかのトリックを実行するなど、いくつかの提案 (前述の「醜いハック」) も提供されています。

以上がシェルコマンドの出力 (stdout、stderr) をバッファリングしないようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート