首頁 > 後端開發 > Golang > 如何從聊天機器人即時捕捉命令輸出?

如何從聊天機器人即時捕捉命令輸出?

Susan Sarandon
發布: 2024-11-03 04:50:30
原創
676 人瀏覽過

How to Capture Command Output in Real Time from a Chat Bot?

如何即時捕捉指令執行的輸出

問題:

何時從機器人聊天中執行命令時,標準輸出輸出會在命令結束時立即返回。為了實現即時輸出,需要修改其執行方式以即時寫入。

建議的解決方案:

提供的函數一次收集所有 stdout 輸出並在完成後返回。我們可以透過使用管道即時捕獲輸出來改進這一點。

實作:

<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>
登入後複製

使用此方法,執行的標準輸出指令將即時傳送到聊天頻道,以便即時回饋和互動溝通。

以上是如何從聊天機器人即時捕捉命令輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板