표준 입력 및 출력을 처리하는 프로그램을 개발할 때 여부에 따라 동작을 차별화하는 애플리케이션을 접할 수 있습니다. 입력은 터미널(TTY) 또는 파이프에서 나옵니다. 이를 방지하려면 TTY를 모방하도록 프로그램을 구성할 수 있습니다.
해결책:
Go에서는 다음 코드를 활용하여 TTY를 모방하는 프로그램을 만들 수 있습니다. TTY를 사용하세요:
package main import ( "fmt" "io" "log" "os/exec" ) func main() { // Get the command to execute cmd := exec.Command("your-command") // Create a pipe to capture the output stdout, err := cmd.StdoutPipe() if err != nil { log.Fatal(err) } // Start the command if err := cmd.Start(); err != nil { log.Fatal(err) } // Continuously read from the output pipe go func() { for { buf := make([]byte, 1024) n, err := stdout.Read(buf) if err != io.EOF { if err != nil { log.Print(err) } continue } fmt.Print(string(buf[:n])) } }() // Wait for the command to finish if err := cmd.Wait(); err != nil { log.Fatal(err) } }
어떻게 하나요? 작동:
이 코드는 지정된 명령('your-command')을 시작하고 해당 출력을 버퍼로 파이프합니다. 그런 다음 TTY의 동작을 시뮬레이션하여 출력을 지속적으로 읽고 인쇄하도록 goroutine을 설정합니다. 프로그램은 종료하기 전에 명령이 완료될 때까지 기다립니다.
위 내용은 Go에서 터미널(TTY)을 프로그래밍 방식으로 시뮬레이션하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!