NewWatcher(pty.Pty)NewWatcher(io.ReadWriter)

This commit is contained in:
HAYAMA_Kaoru
2024-11-29 13:43:07 +09:00
parent 0ae6dd9422
commit 98f350ad89
+4 -6
View File
@@ -5,8 +5,6 @@ import (
"os" "os"
"strings" "strings"
"time" "time"
"github.com/aymanbagabas/go-pty"
) )
type Watcher struct { type Watcher struct {
@@ -14,19 +12,19 @@ type Watcher struct {
lastline string lastline string
} }
func NewWatcher(ptmx pty.Pty) *Watcher { func NewWatcher(pty io.ReadWriter) *Watcher {
pipeline := make(chan string, 1024) pipeline := make(chan string, 1024)
go io.Copy(ptmx, os.Stdin) go io.Copy(pty, os.Stdin)
go func() { go func() {
for { for {
var buffer [1024]byte var buffer [1024]byte
n, err := ptmx.Read(buffer[:]) n, err := pty.Read(buffer[:])
if err != nil { if err != nil {
close(pipeline) close(pipeline)
return return
} }
// If the code below spends a lot of time, // If the code below spends a lot of time,
// It hangs up to io.Copy(ptmx, os.Stdin) // It hangs up to io.Copy(pty, os.Stdin)
// The reason is unknown. // The reason is unknown.
os.Stdout.Write(buffer[:n]) os.Stdout.Write(buffer[:n])
pipeline <- string(buffer[:n]) pipeline <- string(buffer[:n])