Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengalihkan Input ke `exec.Command()` dalam Go?

Bagaimana untuk Mengalihkan Input ke `exec.Command()` dalam Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-07 15:54:13232semak imbas

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

Menjalankan Perintah dengan Pengalihan Input Menggunakan exec.Command()

Dalam Go, exec.Command() menawarkan cara yang mudah untuk melaksanakan arahan luaran. Walau bagaimanapun, pengendalian pengalihan masukan boleh menjadi mencabar. Perbincangan ini meneroka cara menggunakan exec.Command() untuk menjalankan arahan /sbin/iptables-restore < /etc/iptables.conf.

Pada mulanya, cubaan untuk menyediakan arahan dengan < dan < /etc/iptables.conf gagal. Paip nama fail melalui stdin juga tidak berfungsi. Sebaliknya, untuk mengubah hala input ke stdin, anda perlu terlebih dahulu membaca kandungan fail input, /etc/iptables.conf.

Begini cara untuk mencapainya:

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)
    }
}

Pendekatan ini membolehkan kami membaca kandungan fail, paipkannya ke stdin arahan, dan kemudian mulakan arahan dengan ubah hala input yang dikehendaki.

Atas ialah kandungan terperinci Bagaimana untuk Mengalihkan Input ke `exec.Command()` dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn