我正在使用termbox-go创建应用程序。这个库在Windows DOS(windows10)下工作正常。但是在Windows上的Bash on Ubuntu上,发现当termbox.Init()
运行时,会出现invalid argument
错误。我认为这是一个原因,终端的tty可能不是原始模式。但我不知道避免这个问题的原因和方法。
我的问题如下。
Windows上Ubuntu上的Bash版本为Ubuntu 16.04.3 LTS
。 Go的版本是1.8.3。使用runtime.GOOS
时,Windows上的Ubuntu上的Windows DOS和Bash分别显示windows
和linux
。
package main
import (
"log"
"os"
"github.com/nsf/termbox-go"
)
func main() {
err := termbox.Init()
if err != nil {
log.Println(err.Error())
os.Exit(1)
}
}
invalid argument
此错误排名是api.go
下面的脚本。
_, err = fcntl(in, syscall.F_SETFL, syscall.O_ASYNC|syscall.O_NONBLOCK)
fcntl()
位于termbox.go
。
func fcntl(fd int, cmd int, arg int) (val int, err error) {
r, _, e := syscall.Syscall(syscall.SYS_FCNTL, uintptr(fd), uintptr(cmd),
uintptr(arg))
val = int(r)
if e != 0 {
err = e
}
return
}
我不知道这个职位是否会成为解决方案。
非常感谢你的时间和建议。对于我不成熟的问题,我很抱歉。