我正在尝试从 Golang 中的 Stdin 读取数据,因为我正在尝试为 Erlang 实现一个驱动程序。我有以下代码:
package main
import (
"fmt"
"os"
"bufio"
"time"
)
func main() {
go func() {
stdout := bufio.NewWriter(os.Stdin)
p := []byte{121,100,125,'\n'}
stdout.Write(p)
}()
stdin := bufio.NewReader(os.Stdin)
values := make([]byte,4,4)
for{
fmt.Println("b")
if read_exact(stdin) > 0 {
stdin.Read(values)
fmt.Println("a")
give_func_write(values)
}else{
continue
}
}
}
func read_exact(r *bufio.Reader) int {
bits := make([]byte,3,3)
a,_ := r.Read(bits)
if a > 0 {
r.Reset(r)
return 1
}
return -1
}
func give_func_write(a []byte) bool {
fmt.Println("Yahu")
return true
}
然而,似乎give_func_write从未达到过。我试图在 2 秒后启动一个 goroutine 来写入标准输入来测试这个。
我在这里缺少什么?也行r.Reset(r)。这在 go 中有效吗?我试图实现的只是从文件的开头重新开始读取。有没有更好的办法?
编辑
有玩绕后,我能够找到的代码是停留在a,_ := r.Read(bits)在read_exact功能
慕姐4208626
相关分类