出力バッファリングを行わずにシェルコマンドを実行する方法はありますか?
たとえば、hexdump file | ./my_script
は、hexdump からの入力を 1 行ずつではなく、バッファリングされたチャンクで my_script に渡すだけです。
コマンドの出力をバッファリングしないようにするための一般的な解決策は何ですか?
私の知る限り、醜いハックなしではこれを行うことはできません。パイプへの書き込み (またはパイプからの読み取り) は、完全なバッファリングを自動的にオンにします。これについては何もできません:-(。「行バッファリング」(これが必要なものです) は、ターミナルへの読み取り/書き込み時にのみ使用されます。醜いハッキング まさにこれが何をしているのか: プログラムを疑似端末に接続し、パイプライン内の他のツールがラインバッファモードでその端末から読み書きできるようにします。問題全体は次のように説明されます:
このページには、unbuffer
を使用するか、LD_PRELOAD
を使用していくつかのトリックを実行するなど、いくつかの提案 (前述の「醜いハック」) も提供されています。
以上がシェルコマンドの出力 (stdout、stderr) をバッファリングしないようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。