登录
首页 >  Golang >  Go问答

如何关闭或清理标准输出管道?

来源:stackoverflow

时间:2024-04-21 14:45:35 436浏览 收藏

小伙伴们有没有觉得学习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的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>