Go では、exec.Command() を使用して外部コマンドを実行する便利な方法が提供されます。ただし、入力リダイレクトの処理は困難な場合があります。この説明では、exec.Command() を使用してコマンド /sbin/iptables-restore < を実行する方法について説明します。 /etc/iptables.conf.
最初に、< を使用してコマンドをセットアップしようとします。 < /etc/iptables.conf が失敗しました。標準入力を介してファイル名をパイプすることも機能しませんでした。代わりに、入力を stdin にリダイレクトするには、まず入力ファイル /etc/iptables.conf の内容を読み取る必要があります。
これを実現する方法は次のとおりです。
package main import ( "io" "io/ioutil" "log" "os/exec" ) func main() { bytes, err := ioutil.ReadFile("/etc/iptables.conf") if err != nil { log.Fatal(err) } cmd := exec.Command("/sbin/iptables-restore") stdin, err := cmd.StdinPipe() if err != nil { log.Fatal(err) } err = cmd.Start() if err != nil { log.Fatal(err) } _, err = io.WriteString(stdin, string(bytes)) if err != nil { log.Fatal(err) } }
このアプローチこれにより、ファイルのコンテンツを読み取り、それをコマンドの標準入力にパイプし、必要な入力リダイレクトでコマンドを開始できます。
以上がGo で入力を「exec.Command()」にリダイレクトするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。