小编cos*_*mrr的帖子

从 Go 中的 StdoutPipe() 读取冻结

我正在尝试从命令的 Stdout 中读取,但每隔(大约)50 次它就会冻结。

func runProcess(process *exec.Cmd) (string, string, error) {
    var stdout strings.Builder
    var stderr string
    process := exec.Command(programPath, params...)

    go func() {
        pipe, err := process.StderrPipe()
        if err != nil {
            return
        }

        buf, err := io.ReadAll(pipe)
        if err != nil {
            log.Warn("Error reading stderr: %v", err)
        }
        stderr = string(buf)
    }()

    pipe, err := process.StdoutPipe()
    if err = process.Start(); err != nil {
        return "", "", err
    }

    buf := make([]byte, 1024)
    read, err := pipe.Read(buf)            // …
Run Code Online (Sandbox Code Playgroud)

stdout go

3
推荐指数
1
解决办法
101
查看次数

标签 统计

go ×1

stdout ×1