鍍金池/ 問答/GO/ 關于Go語言無法重定向標準輸入流問題

關于Go語言無法重定向標準輸入流問題

在學習Go語言的時候,發(fā)現(xiàn)只能重定向標準輸入和標準錯誤流,沒法重復標準輸入流,不知道是代碼問題,還是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());
    }
}

不知道有沒有朋友遇到相同的問題。

回答
編輯回答
撥弦

這個問題是因為文件打開了只寫模式。

2017年9月15日 18:10