首頁 > 後端開發 > Golang > Go中如何實現非阻塞字元輸入?

Go中如何實現非阻塞字元輸入?

DDD
發布: 2024-12-31 22:05:12
原創
968 人瀏覽過

How Can I Achieve Non-Blocking Character Input in Go?

Go 中的非阻塞字元輸入

使用Go 的標準庫並執行操作可以實現不按Enter 鍵從標準輸入讀取字元系統指令。

對於 Windows 用戶,可以使用 syscall 套件使用非規範輸入模式。但是,這種方法依賴平台,可能不適合跨平台開發。

基於UNIX 的解決方案

提供的解決方案適用於基於UNIX 的系統,並且停用輸入緩衝和字元回顯:

package main

import (
    "fmt"
    "os"
    "os/exec"
)

func main() {
    // disable input buffering
    exec.Command("stty", "-F", "/dev/tty", "cbreak", "min", "1").Run()
    // do not display entered characters on the screen
    exec.Command("stty", "-F", "/dev/tty", "-echo").Run()

    var b []byte = make([]byte, 1)
    for {
        os.Stdin.Read(b)
        fmt.Println("I got the byte", b, "("+string(b)+")")
    }
}
登入後複製

此程式將從標準輸入中重複讀取字符,直到終止。 cbreak 模式停用行緩衝,而 -echo 標誌阻止輸入的字元顯示在螢幕上。

注意:

此解決方案假設您正在使用支援非規範輸入模式的終端模擬器。如果您的終端不支持,您可能需要相應調整代碼。

以上是Go中如何實現非阻塞字元輸入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板