Cara Menangkap Output daripada Pelaksanaan Perintah dalam Masa Nyata
Isu:
Bila melaksanakan arahan dari dalam bot sembang, output stdout dikembalikan sekaligus pada akhir arahan. Untuk mencapai output masa nyata, terdapat keperluan untuk mengubah suai pelaksanaannya untuk menulis dalam masa nyata.
Penyelesaian Cadangan:
Fungsi yang disediakan mengumpul output stdout sekaligus dan mengembalikannya setelah selesai. Kita boleh menambah baik perkara ini dengan menggunakan paip untuk menangkap output dalam masa nyata.
Pelaksanaan:
<code class="go">package main import ( "os" "os/exec" "fmt" "bufio" ) func main() { cmd := exec.Command("tail", "-f", "/usr/local/var/log/redis.log") // create a pipe for the output of the script cmdReader, err := cmd.StdoutPipe() if err != nil { fmt.Fprintln(os.Stderr, "Error creating StdoutPipe for Cmd", err) return } scanner := bufio.NewScanner(cmdReader) go func() { for scanner.Scan() { fmt.Printf("\t > %s\n", scanner.Text()) } }() err = cmd.Start() if err != nil { fmt.Fprintln(os.Stderr, "Error starting Cmd", err) return } err = cmd.Wait() if err != nil { fmt.Fprintln(os.Stderr, "Error waiting for Cmd", err) return } }</code>
Menggunakan pendekatan ini, output stdout daripada yang dilaksanakan arahan akan distrim ke saluran sembang dalam masa nyata, membolehkan maklum balas segera dan komunikasi interaktif.
Atas ialah kandungan terperinci Bagaimana untuk Menangkap Output Perintah dalam Masa Nyata daripada Bot Sembang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!