我正在Ubuntu 12.04 LTS机器上使用Go 1.2进行编码-使用LiteIDE(对此非常满意)。
我下载并安装了 go termbox软件包 -构建了demo keyboard.go-构建良好。
但是,当我从LiteIDE运行时,我会感到恐慌-所有termbox演示都发生了同样的情况:
panic: open /dev/tty: no such device or address
任何线索都将有所帮助。
是的,这是完全合理的: 交互式 终端应用程序需要 终端 可用。终端可以真实的硬件 -或虚拟的(就像你在一个典型的x86机器上看到,当你打CTRL- ALT-F1的Linux虚拟终端)或模拟(如由xterm中提供的,rxvt的,GNOME终端和一吨他人的)。
与Windows相反,在Windows中,运行“控制台”类型的程序会强制创建控制台窗口并附加一个应用程序,而在POSIX系统上则没有“类型”的应用程序,并且如果应用程序希望为其提供真实的终端I / O为此执行特殊检查,如果失败,则应用程序将发出错误信号并退出1。如今,很少有人可以使用真正的硬件终端,因此大部分时间都使用仿真,然后我们讨论所谓的 伪终端。 Linux虚拟终端和GUI终端仿真器以及终端控制台多路复用器,例如screen和tmux,它们都为运行它们控制的程序分配了伪终端。
screen
tmux
因此,基本上,您有以下选择:
在您的IDE中找到一个设置,使其在运行程序时分配一个伪终端。某些程序可以通过将终端仿真器嵌入其UI或显式运行它来做到这一点。
教您的IDE在终端仿真器中运行程序。他们中的大多数人遵循古老者建立的约定xterm并接受-e <program>命令行选项,因此
xterm
-e <program>
./myprogram
您的IDE应该运行
xterm -e ./myprogram
如果您使用的是Debian系统或其衍生产品,则可能会不满意
x-terminal-emulator -e ./myprogram
应该会生成您首选的终端仿真器程序。
go build
工作流程。
我从未使用过LiteIDE,因此在其中如何做还没有立即的经验,您必须自己进行研究。
1有些程序可能会在不连接终端的情况下愉快地工作,例如外壳(如bash或zsh)和解释器(如Tcl或Python)就是很好的例子:当它们检测到可用的终端设备时,便进入交互模式,启用行编辑等。否则,他们只是从标准输入中读取代码并执行它。另一个很好的例子是Git:它的高级程序检测它们是否连接到终端,如果可以,则可以启用其输出的颜色,如果它们的输出要溢出一行屏幕,则它们会自动生成一个寻呼程序。否则,他们会大惊小怪,只是将其输出转储到标准输出流中。
bash
zsh
Tcl
Python