コマンド出力の進行状況のストリーミング
コマンドを実行するプロセスでは、指定された出力場所と指定された出力場所の両方に出力をストリーミングする必要がよくあります。リアルタイムのログ ファイル。ただし、長時間のプロセスを処理する場合、cmd.StdoutPipe メソッドは最終結果を文字列としてのみ提供します。この記事では、コマンド実行プロセス中に部分出力のストリーミングを有効にする方法について詳しく説明します。
質問で提供されている例では、bufio.NewScanner を利用してパイプ経由で標準出力を読み取ります。よくある誤解は、一行ずつ読むものであるということです。実際には、bufio.ScanLines 関数で定義されているように、改行によって入力を読み取ります。実行されたコマンドで改行が生成されない場合、出力はすぐには返されません。
回避策:
この制限を克服するには、次の代替アプローチを検討してください。
子でのブロックの可能性を防ぐために、標準出力とエラーの両方を読み取ることが重要です。バッファがいっぱいのためプロセスが停止します。デフォルトでは、子プロセスの標準出力ストリームとエラー ストリームは破棄されます。ただし、標準エラー ストリームが読み取られない場合、欠落したエラー メッセージが発生する可能性があります。
以上が実行中に部分的なコマンド出力をリアルタイムでストリーミングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。