3

我正在使用termbox-go创建一个应用程序。这个库在 windows DOS (windows10) 上运行良好。但是在 Windows 上的 Ubuntu 上的 Bash,发现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
}

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

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

4

0 回答 0