2014-02-18 33 views
1

我在Ubuntu 12.04 LTS机器上使用Go 1.2编码 - 使用LiteIDE(非常满意)。GoLang - termbox:panic:open/dev/tty:没有这样的设备或地址

我下载并安装了go termbox package - 内置了演示keyboard.go - 建好了。

但是当我从LiteIDE运行,我得到这个恐慌 - 同样的情况,所有的termbox演示:

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

任何线索将是有益的....

+0

1)您如何运行您的演示?这是通过在IDE中点击一些“构建和运行”键来实现的,还是你在做这个终端窗口? 2)如果是后者,当你在*相同的*终端窗口中运行时,'stat/dev/tty'会对你说什么? – kostix

+0

@kostix - 从ide运行它,得到了tyy错误。现在从终端跑,它没有安装消息错误包termbox。手动将构建的包放到pkg目录中,然后它从终端工作,但不是从liteIde - 同样的事情发生在sqlite3 pkg - 一些与我的GoPath搞砸的东西,我认为... – Vector

+0

好吧,现在情况已经很清楚了 - 我刚刚发布了一个答案。 – kostix

回答

4

OK,这是完全合理的: 互动终端应用需求,以及终端可用。终端可能是真实的— hardware —或虚拟的(例如,当您按Ctrl-Alt-F1时在典型的x86框中看到的Linux虚拟终端)或仿真(如xterm,rxvt,GNOME终端和其他许多终端提供的终端)。

与Windows相反,运行“console”类型的程序强制创建控制台窗口并附加应用程序,在POSIX系统上没有“类型”的应用程序,并且如果应用程序想要一个真实终端可用于其I/O,它会对此进行特殊检查,如果失败,应用程序会发出错误信息并退出。现在很少有人可以访问真正的硬件终端,因此大多数时候都使用仿真,然后我们讨论所谓的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所以有如何做,在它—你必须做自己的研究没有直接的经验。


某些程序可能愉快地具有或不具有附连到终端的工作,有壳(如bashzsh)和翻译(如TclPython)是很好的例子:当它们检测到终端装置可用,他们进入交互模式,启用行编辑等等,否则他们只是从他们的标准输入中读取代码并执行它。另一个很好的例子是Git:它的高级程序检测它们是否连接到一个终端,如果是这样的话,它们可以使它们的输出着色,并且如果它们的输出如果要溢出单个屏幕行,则自动产生寻呼机程序;否则他们会大惊小怪,只是将他们的输出转储到他们的标准输出流中。

+0

具有完美的感觉。当你运行你的代码时,LiteIDE有'在终端会话中运行'选项。我相信这会有效。与Windows相反,在其中运行“console”类型的程序强制使用控制台窗口..._ - 这对我来说很重要。我一直是个DOS/Windows的家伙 - 只在去年左右搞乱了Linux - 很高兴有这个解释。 – Vector

+0

+1教导我一些新的和有趣的今天。 :) – weberc2

相关问题