我正在用围棋编写一个程序,它可以执行类似程序(也叫围棋)的服务器.现在,我想将子程序的stdout放在启动父程序的终端窗口中.一种方法是使用cmd.Output()函数,但是只有在进程退出后才会打印标准输出.(这是个问题,因为这个类似服务器的程序要运行很长时间,我想读取日志(log)输出)

变量outtype io.ReadCloser,我不知道应该如何处理它才能完成任务,而且我在网上找不到任何关于这个主题的有用信息.

func main() {
    cmd := exec.Command("/path/to/my/child/program")
    out, err := cmd.StdoutPipe()
    if err != nil {
        fmt.Println(err)
    }
    err = cmd.Start()
    if err != nil {
        fmt.Println(err)
    }
    //fmt.Println(out)
    cmd.Wait()
} 

代码说明:取消对Println函数的注释以获得要编译的代码,我知道Println(out io.ReadCloser)不是一个有意义的函数

推荐答案

现在我希望将子程序的stdout放在我的终端中 启动父程序的窗口.

不需要弄乱管道或goroutines,这很简单.

func main() {
    // Replace `ls` (and its arguments) with something more interesting
    cmd := exec.Command("ls", "-l")
    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr
    cmd.Run()
}

Go相关问答推荐

GetSecretValue,get identity:get credentials:无法刷新缓存的凭据

如何将文件从AWS S3存储桶复制到Azure BLOB存储

创建使用逗号而不是加号分隔OU的CSR

用 fork 替换 Go 依赖:...用于两个不同的模块路径

如何使用gosdk在Dynamodb中进行UpdateItem时,将ValueBuilder对象声明为StringSet类型?

闭包所处的环境范围是什么?

无法将 graphql-ws 连接到 gqlgen

go - 仅在函数即将返回错误时清理资源

Golang:如何判断通过缓冲通道进行通信时生产者或消费者是否较慢?

如何处理 Go 的 firebase admin sdk 错误?

访问传递给可变参数函数的通用 struct 的特定字段

通过 golang 中的 gremlin-go 库嵌入 gremlin 服务器

如何根据 Go 中第二次出现的分隔符拆分字符串?

Golang prometheus 显示自定义指标

Go AST:获取所有 struct

golang jwt.MapClaims 获取用户ID

如何从 tinygo webassembly 目标返回对象

Go:如何创建一个可以提供配置文件中描述的 url 的服务器

为什么 Go 中的 maps.Keys() 将 map 类型指定为 M?

Go 赋值涉及到自定义类型的指针