当前位置: > > > > 如何关闭或清理标准输出管道?
来源:stackoverflow
2024-04-21 14:45:35
0浏览
收藏
小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《如何关闭或清理标准输出管道?》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!
问题内容
我有一个程序,它可以与新的(每次执行该程序时)gcp 实例建立 ssh 连接以检索信息。问题是有时我会收到此错误,但我不知道为什么:
2019/08/22 12:30:37 ssh: stdout already set
我的代码(避免错误处理):
results := /home/example.txt client, err := ssh.Dial("tcp", addrIP+":22", clientConfig) session, err := client.NewSession() defer session.Close() data, err := session.Output(" cat " + results) if err != nil { log.Print("Fails when new output") log.Fatal(err) }
输出期间是发生错误的时候。
解决方案
调用 session.Output
会将会话的 Stdout
设置到缓冲区,然后运行提供的命令,并返回缓冲区中的内容。
如果该会话的Stdout
已经设置(例如多次调用session.Output
),则会返回“Stdout已经设置”的错误。
如果您需要在一个会话中运行多个命令,只需手动将 Stdout
设置为您自己维护的某个缓冲区,并使用 session.Run()
方法而不是 session.Output
。
本篇关于《如何关闭或清理标准输出管道?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注公众号!