Termbox库无法在termbox-go初始化

时间:2017-08-28 04:40:25

标签: go terminal bash-on-windows

我正在使用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分别显示windowslinux

脚本

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
}

我不知道这个职位是否会成为解决方案。

非常感谢你的时间和建议。对于我不成熟的问题,我很抱歉。

0 个答案:

没有答案