Masalah: Paparan Output Tertunda
Pada masa ini, kod anda memproses arahan dan hanya memaparkan outputnya sebaik sahaja pelaksanaan selesai. Anda mencari penyelesaian untuk menstrim output secara langsung dan bukannya menunggu proses selesai.
Penyelesaian: Penstriman Output Perintah
Gunakan pendekatan berikut untuk menstrim 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
Atas ialah kandungan terperinci Bagaimana untuk Menstrim Output Perintah dalam Masa Nyata Daripada Menunggu Penyelesaian Pelaksanaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!