在開發處理標準輸入和輸出的程式時,您可能會遇到一些應用程序,這些應用程式會根據是否輸入來自終端機(TTY) 或管道。為了防止這種情況,您可以將程式配置為模仿 TTY。
解決方案:
在 Go 中,您可以利用以下程式碼建立一個程式來假裝成為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')並將其輸出透過管道傳輸到緩衝區。然後它設定一個 goroutine 來連續讀取和列印輸出,模擬 TTY 的行為。程式等待命令完成後再退出。
以上是如何在 Go 中以程式設計方式模擬終端機 (TTY)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!