重新创建 STDOUT 会影响 STDIN

问题描述 投票:0回答:1

在 Golang 中发现棘手的错误。修改 STDOUT 使得无法从 STDIN 读取:

package main

import "os"

func main() {
        bts := make([]byte, 10)

        // Side-affects
        os.Create(os.Stdout.Name()) // comment to correct Read from STDIN

        n, err := os.Stdin.Read(bts)
        if err != nil {
           println("err: " + err.Error()) // err: read /dev/stdin: resource temporarily unavailable
           return
        }

        println(n)
}

//结果

错误:读取/dev/stdin:资源暂时不可用

//预期

(没有错误)

go
1个回答
0
投票

运行得很好...我使用的是 Ubuntu 24.04 linux,go 版本为 go1.23.1

当我执行你的代码时,它只是正确地坐在那里听标准输入......当我输入时在同一个终端中

万圣节快乐

它通过输出来响应

10

然后在同一个终端中显示

未找到命令“ween”,您的意思是:

所以从以上来看一切都很好

© www.soinside.com 2019 - 2024. All rights reserved.