关于Go语言无法重定向标准输入流问题

在学习Go语言的时候,发现只能重定向标准输入和标准错误流,没法重复标准输入流,不知道是代码问题,还是Go本身问题(猜测),代码如下:

package main

import (
    "fmt"
    "os"
    "syscall"
)

func main() {

    var (
        firstName, lastName string;
    )

    fmt.Println("Go Process START")

    ioRedirect("/Path/To/File/stdin.dat")

    fmt.Scanln(&firstName, &lastName)

    fmt.Println(firstName + " " + lastName)

    fmt.Println("Go Process END")
}

func ioRedirect(file string) {
    f, e := os.OpenFile(file, os.O_WRONLY|os.O_CREATE|os.O_SYNC, 0755)
    if e == nil {
        fd := f.Fd()
        syscall.Dup2(int(fd), int(os.Stdin.Fd()))
    }

    if e != nil {
        fmt.Println(e.Error());
    }
}

不知道有没有朋友遇到相同的问题。

阅读 3.9k
1 个回答

这个问题是因为文件打开了只写模式。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题