Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mengesan jika Input STDIN Go adalah daripada Paip atau Terminal?
Mengesan Ketersediaan Data STDIN dalam Go
Dalam kod anda, anda bertujuan untuk membezakan antara apabila data disalurkan ke STDIN dan apabila ia dilaksanakan daripada terminal. Cabarannya terletak pada menangani sifat menyekat ioutil.ReadAll(), yang menunggu input selama-lamanya apabila STDIN kosong.
Penyelesaian: Menggunakan os.ModeCharDevice
Untuk menyelesaikan isu ini, kami boleh memanfaatkan os.ModeCharDevice untuk menentukan sama ada STDIN dikaitkan dengan terminal atau paip. Begini caranya:
package main import ( "fmt" "os" ) func main() { stat, _ := os.Stdin.Stat() if (stat.Mode() & os.ModeCharDevice) == 0 { fmt.Println("data is being piped to stdin") } else { fmt.Println("stdin is from a terminal") } }
Penjelasan:
jika (stat.Mode() & os.ModeCharDevice) == 0: Semak sama ada mod fail STDIN tidak mempunyai set bit os.ModeCharDevice.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesan jika Input STDIN Go adalah daripada Paip atau Terminal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!