1 回答

TA貢獻1906條經驗 獲得超10個贊
我正在處理一個類似的問題,而 creack 的 pty 可能對于你想要的東西來說有點太抽象了。我剛剛使用了 golang 標準 xterm 終端仿真器https://pkg.go.dev/golang.org/x/term和一個管道。
這是我的意思的一個例子的部分片段。您的 stdin 流被送入stdin_writer并且您的 stdout 被寫入writer,不要忘記Flush()!
stdin_reader, stdin_writer := io.Pipe()
reader := bufio.NewReader(stdin_reader)
stdout_writer := bytes.Buffer{}
writer := bufio.NewWriter(&stdout_writer)
rw := bufio.NewReadWriter(reader, writer)
t := term.NewTerminal(rw, prompt)
// constantly be reading lines
go func() {
for {
line, err := t.ReadLine()
if err == io.EOF {
log.Printf("got EOF")
}
if err != nil {
log.Printf("got err")
}
if line == "" {
continue
}
log.Printf("LINE: %s", line)
}
}()
- 1 回答
- 0 關注
- 102 瀏覽
添加回答
舉報