ホームページ > バックエンド開発 > Golang > Go で入力を「exec.Command()」にリダイレクトするにはどうすればよいですか?

Go で入力を「exec.Command()」にリダイレクトするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-07 15:54:13
オリジナル
224 人が閲覧しました

How to Redirect Input to `exec.Command()` in Go?

exec.Command() を使用した入力リダイレクトによるコマンドの実行

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 サイトの他の関連記事を参照してください。

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