Vec*_*tor 1 go tty ubuntu-12.04
我在Ubuntu 12.04 LTS机器上使用Go 1.2进行编码 - 使用LiteIDE(非常满意).
我下载并安装了go termbox软件包 - 构建了demo keyboard.go - 很好.
但是当我从LiteIDE运行时,我得到了这种恐慌 - 所有的termbox演示也是如此:
panic: open /dev/tty: no such device or address
Run Code Online (Sandbox Code Playgroud)
任何线索都会有所帮助....
好的,这是完全合理的:交互式终端应用程序要求终端可用.终端可以是真实硬件 - 或虚拟(如您在按Ctrl-Alt-F1时在典型的x86机箱上看到的Linux虚拟终端)或模拟(如xterm,rxvt,GNOME终端和其他许多人提供的那些).
与Windows相反,运行"console"类型的程序强制创建一个控制台窗口并附加一个应用程序,在POSIX系统上没有应用程序的"类型",如果一个应用程序想要一个真正的终端可用于它I/O会对此执行特殊检查,如果失败,则应用程序发出错误信号并退出1.现在很少有人可以访问真正的硬件终端,因此大部分时间都使用仿真,然后我们讨论所谓的伪终端. Linux虚拟终端和GUI终端仿真器以及终端控制台多路复用器(screen和tmux-all)分配伪终端以运行它们控制的程序.
所以基本上你有这些选择:
在IDE中查找设置,使其在运行程序时分配伪终端.有些程序可以通过将终端仿真器嵌入到UI中或通过显式运行来实现.
教您的IDE以在终端模拟器中运行您的程序.他们中的大多数都遵守古老建立的约定xterm并接受-e <program>命令行选项,因此不是
./myprogram
Run Code Online (Sandbox Code Playgroud)
你的IDE应该运行
xterm -e ./myprogram
Run Code Online (Sandbox Code Playgroud)
如果您使用的是Debian系统或其衍生产品,您可能会侥幸逃脱
x-terminal-emulator -e ./myprogram
Run Code Online (Sandbox Code Playgroud)
应该产生你喜欢的终端模拟器程序.
停止在IDE中运行代码,并使用常规在终端仿真器中执行此操作
go build
./myprogram
Run Code Online (Sandbox Code Playgroud)
流程.
我从来没有使用过LiteIDE,因此没有立即体验如何做到这一点 - 你必须做自己的研究.
1有些程序可以愉快地使用或不使用终端,shell(如bash或zsh)和解释器(如Tcl或Python)是很好的例子:当他们检测到可用的终端设备时,他们进入交互模式,启用行编辑等等on,否则他们只是从标准输入中读取代码并执行它.另一个很好的例子是Git:它的高级程序检测它们是否连接到一个终端,如果是这样,它们可以启用它们的输出着色并自动产生一个寻呼机程序,如果它们的输出即将溢出单个屏幕线; 否则他们会大惊小怪,只是将输出转储到标准输出流.