当前位置: 首页 > 面试题库 >

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

秦博达
2023-03-14
问题内容

我正在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终端仿真器以及终端控制台多路复用器,例如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:它的高级程序检测它们是否连接到终端,如果可以,则可以启用其输出的颜色,如果它们的输出要溢出一行屏幕,则它们会自动生成一个寻呼程序。否则,他们会大惊小怪,只是将其输出转储到标准输出流中。



 类似资料:
  • 问题内容: 我对golang相当陌生,并尝试使用chanel理解主要原理并编写基于古洛丁的代码。 在我使用的其他语言中,没有这样的工具,我不知道会出现这样的错误,例如恐慌… 我的代码: 但是在终端我得到了这个: 我如何确定问题出在哪里,如何很好地关闭古丁鱼,而不是将其留在流程中… ps原谅我我的菜鸟问题。请 问题答案: nil取消引用: 您正在尝试访问指针所引用的结构,但是该指针尚未设置为该结构的

  • 问题内容: 我是Linux Mint用户,正在处理Arduino Yun,正在编译Arduino程序,之后上传到Arduino Yun,然后我得到这些错误,您能帮我吗? 问题答案: 你 首先 需要确保您有正确的读/写权限,如所描述这里,esentially输入以下命令: “ / dev / ttyACM0”是您的arduino连接到的端口,它应该在根目录的/ dev文件夹中列出。 第二: 在确定了

  • 问题内容: 我正在尝试使用mgo将objectid字符串转换为bson ObjectId格式, idk为什么,但是如果我输入了错误/无效的输入字符串,我的应用程序就会出现运行时恐慌 我该如何预防呢?谢谢 问题答案: 文档,如果您传递无效的对象ID将恐慌: ObjectIdHex从提供的十六进制表示形式返回ObjectId。 以无效的十六进制表示形式调用此函数将导致运行时恐慌。 请参见IsObjec

  • 我有一个简单的远程ssh脚本命令nohupssh。嘘 我按如下方式运行脚本: 当我如上所示执行它时,jmap实用程序在远程服务器上成功执行。但是,如果按照上面所示执行它并退出bashshell,则会出现如下所示的错误。 请注意,我在本地和远程服务器上都有一个正确格式化的authorized_keys。另外请注意,由于这两个服务器是共享的,所以这两个服务器都没有id_rsa。 我试过很多组合: 但是

  • 说明 获取乘客是否已设置紧急联系人 请求地址 /v1/order/Safety/getContacterSetting HTTP请求方式 GET 支持格式 {url}?k1=v1&k2=v2&k3=v3&... 是否需要登录 是 关于登录授权,参见 如何登录授权 访问授权限制 暂无 请求参数 名称 类型 必选 描述 client_id string yes 申请应用时分配的AppKey acces

  • 我正在尝试测试对 HTTP 服务器具有基础 GET 调用的代码。 我正在尝试使用WireMock,根据“入门指南”,我有以下代码: 运行测试时,我得到以下堆栈跟踪: 错误涉及端口8080,但我将端口配置为8888。我知道默认情况下WireMock以端口8080启动,因此这可能是其内部配置的问题。 这里有什么问题?