小编典典

GoLang-termbox:紧急情况:打开/ dev / tty:没有此类设备或地址

go

我正在Ubuntu 12.04 LTS机器上使用Go 1.2进行编码-使用LiteIDE(对此非常满意)。

我下载并安装了 go termbox软件包 -构建了demo
keyboard.go-构建良好。

但是,当我从LiteIDE运行时,我会感到恐慌-所有termbox演示都发生了同样的情况:

panic: open /dev/tty: no such device or address

任何线索都将有所帮助。


阅读 491

收藏
2020-07-02

共1个答案

小编典典

是的,这是完全合理的: 交互式 终端应用程序需要 终端
可用。终端可以真实的硬件
-或虚拟的(就像你在一个典型的x86机器上看到,当你打CTRL-
ALT-F1的Linux虚拟终端)或模拟(如由xterm中提供的,rxvt的,GNOME终端和一吨他人的)。

与Windows相反,在Windows中,运行“控制台”类型的程序会强制创建控制台窗口并附加一个应用程序,而在POSIX系统上则没有“类型”的应用程序,并且如果应用程序希望为其提供真实的终端I
/ O为此执行特殊检查,如果失败,则应用程序将发出错误信号并退出1。如今,很少有人可以使用真正的硬件终端,因此大部分时间都使用仿真,然后我们讨论所谓的
伪终端。

Linux虚拟终端和GUI终端仿真器以及终端控制台多路复用器,例如screentmux,它们都为运行它们控制的程序分配了伪终端。

因此,基本上,您有以下选择:

  • 在您的IDE中找到一个设置,使其在运行程序时分配一个伪终端。某些程序可以通过将终端仿真器嵌入其UI或显式运行它来做到这一点。

  • 教您的IDE在终端仿真器中运行程序。他们中的大多数人遵循古老者建立的约定xterm并接受-e <program>命令行选项,因此

    ./myprogram
    

您的IDE应该运行

    xterm -e ./myprogram

如果您使用的是Debian系统或其衍生产品,则可能会不满意

    x-terminal-emulator -e ./myprogram

应该会生成您首选的终端仿真器程序。

  • 停止在IDE中运行代码,并使用常规命令在终端仿真器中执行代码
    go build
    

    ./myprogram

工作流程。

我从未使用过LiteIDE,因此在其中如何做还没有立即的经验,您必须自己进行研究。


1有些程序可能会在不连接终端的情况下愉快地工作,例如外壳(如bashzsh)和解释器(如TclPython)就是很好的例子:当它们检测到可用的终端设备时,便进入交互模式,启用行编辑等。否则,他们只是从标准输入中读取代码并执行它。另一个很好的例子是Git:它的高级程序检测它们是否连接到终端,如果可以,则可以启用其输出的颜色,如果它们的输出要溢出一行屏幕,则它们会自动生成一个寻呼程序。否则,他们会大惊小怪,只是将其输出转储到标准输出流中。

2020-07-02