Q: コマンドのパイプ処理が終了ステータス 1 で失敗する
exec.Command() を使用してコマンドをパイプしようとすると、次のエラーが発生します発生します:
ps, "cax | grep myapp"
ps cax が動作するのにこのコマンドが失敗するのはなぜですか?
A: exec.Command() による慣用的なパイプ処理
Passing bash のコマンド全体で問題を解決できますが、より慣用的な方法があります。解決策:
コード例:
package main import ( "fmt" "os/exec" ) func main() { grep := exec.Command("grep", "redis") ps := exec.Command("ps", "cax") // Connect ps's stdout to grep's stdin. pipe, _ := ps.StdoutPipe() defer pipe.Close() grep.Stdin = pipe // Run ps first. ps.Start() // Run and get the output of grep. res, _ := grep.Output() fmt.Println(string(res)) }
説明:
以上がGo の「exec.Command()」でコマンドのパイプ処理が失敗するのはなぜですか?どうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。