Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menstrim Output Langsung daripada Perintah yang Dilaksanakan dalam Go?
Output Langsung Perintah yang Dilaksanakan
Coretan kod ini mempamerkan masalah yang sering dihadapi semasa menjalankan arahan dan mendapatkan semula keluarannya dalam Go: output menjadi tersedia hanya selepas arahan selesai dilaksanakan. Untuk menangani ini, penyelesaian yang diubah suai disediakan yang membolehkan penstriman langsung output arahan.
cmdParams := [][]string{ {filepath.Join(dir, path), "npm", "install"}, {filepath.Join(pdir, n.path), "gulp"}, } for _, cp := range cmdParams { log.Printf("Starting %s in folder %s...", cp[1:], cp[0]) cmd := exec.Command(cp[1], cp[2:]...) cmd.Dir = cp[0] stdout, err := cmd.StdoutPipe() if err != nil { log.Printf("%s cmd.StdoutPipe() error: %v\n", cp[1:], err) return } // Start command: if err = cmd.Start(); err != nil { log.Printf("%s start error: %v\n", cp[1:], err) return } // Stream command output: scanner := bufio.NewScanner(stdout) scanner.Split(bufio.ScanRunes) for scanner.Scan() { fmt.Print(scanner.Text()) } if scanner.Err() != nil { log.Printf("Reading %s stdout error: %v\n", cp[1:], err) return } // Get execution success or failure: if err = cmd.Wait(); err != nil { log.Printf("Error running %s: %v\n", cp[1:], err) return } log.Printf("Finished %s", cp[1:]) }
Penjelasan:
Nota Tambahan:
Atas ialah kandungan terperinci Bagaimana untuk Menstrim Output Langsung daripada Perintah yang Dilaksanakan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!