-1
我有一個虛擬程序,我在用stdin搞亂。我希望能夠以編程方式寫入標準輸入以及從中讀取。出於某種原因,我無法閱讀我寫給stdin的信息。它會簡單地阻止,直到它通過終端/主機接收來自用戶的輸入爲什麼我不能讀取我寫給標準輸入的字符串
func main() {
writer := bufio.NewWriter(os.Stdin)
reader := bufio.NewReader(os.Stdin)
fmt.Println("Writing to stdin")
_, err := writer.WriteString("Hello, world\n")
writer.Flush()
checkErr(err)
fmt.Println("Reading from it")
line, err := reader.ReadString('\n')
checkErr(err)
fmt.Println("Line from stdin: ", line)
}
func checkErr(err error) {
if err!= nil {
fmt.Println("Error: ", err.Error())
}
}
輸出如下:
Writing to stdin
Reading from it //blocks here until I input some string from console and hit <Enter>
嘗試使用io.Copy(dst,src)https://golang.org/pkg/io/#Copy – peeyushsrj
當您從終端執行您的go程序時,stdin是一個tty,因此寫入它只是寫入到TTY。 – JimB
請參閱 https://stackoverflow.com/q/11127970 和 https://stackoverflow.com/q/1441251 – Krom