Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengalihkan Input ke `exec.Command()` dalam Go?
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!