在学习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());
}
}
不知道有没有朋友遇到相同的问题。
这个问题是因为文件打开了只写模式。