jjzjj

GoLang-术语框 : panic: open/dev/tty: no such device or address

coder 2023-06-29 原文

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

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

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

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

任何线索都会有所帮助......

最佳答案

好的,这是完全合理的:交互式 终端应用程序需要终端 可用。终端可能是真实的— hardware — 或虚拟(如您在典型的 x86 机器上按 Ctrl-Alt-F1 时看到的 Linux 虚拟终端)或模拟(如 xterm、rxvt、GNOME 终端和大量其他终端提供的终端)。

与 Windows 不同,在 Windows 中运行“控制台”类型的程序会强制创建一个控制台窗口并附加一个应用程序,在 POSIX 系统上没有应用程序的“类型”,如果一个应用程序需要一个真正的终端它对其 I/O 可用,它为此执行特殊检查,如果检查失败,应用程序将发出错误信号并退出1。现在很少有人能接触到真正的硬件终端,所以大部分时间都使用仿真,然后我们谈论所谓的pseudo terminals.。 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 有些程序可以在有或没有连接到终端的情况下愉快地工作,shell(如 bashzsh )和解释器(如 TclPython )被很好的例子:当他们检测到可用的终端设备时,他们进入交互模式,启用行编辑等等,否则他们只是从他们的标准输入中读取代码并执行它。另一个很好的例子是 Git:它的高级程序会检测它们是否连接到终端,如果是,它们可能会启用输出的着色,并在它们的输出即将溢出单屏行时自动生成一个寻呼机程序;否则他们就不会大惊小怪,只是将他们的输出转储到他们的标准输出流。

关于GoLang-术语框 : panic: open/dev/tty: no such device or address,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21845871/

有关GoLang-术语框 : panic: open/dev/tty: no such device or address的更多相关文章

  1. ruby-on-rails - Ruby 的 'open_uri' 是否在读取或失败后可靠地关闭套接字? - 2

    一段时间以来,我一直在使用open_uri下拉ftp路径作为数据源,但突然发现我几乎连续不断地收到“530抱歉,允许的最大客户端数(95)已经连接。”我不确定我的代码是否有问题,或者是否是其他人在访问服务器,不幸的是,我无法真正确定谁有问题。本质上,我正在读取FTPURI:defself.read_uri(uri)beginuri=open(uri).readuri=="Error"?nil:urirescueOpenURI::HTTPErrornilendend我猜我需要在这里添加一些额外的错误处理代码...我想确保我采取一切预防措施来关闭所有连接,这样我的连接就不是问题所在,但是我

  2. Ruby:read_timeout 和 open_timeout 之间的区别 - 2

    标题本身就说明了......read_timeout和open_timeout之间有什么区别? 最佳答案 open_timeout是您愿意等待“打开连接”的时间。在TCP上下文中,在放弃尝试并引发超时错误之前等待握手完成的时间量。read_timeout您可能会猜到,是您愿意等待从连接方接收到某些数据的时间。一个例子可能会清楚地说明这一点:在SOAPoverHTTPoverTCP上下文中(简化):您尝试与服务器建立TCP连接。如果建立连接的时间比open_timeout长,则放弃连接尝试并引发/发出/返回超时错误。如果连接成功,您发

  3. ruby - 使用 File.open 从 ruby​​ 中的目录打开文件 - 2

    我是Ruby的新手,我正在尝试以如下方式打开文件:#!/usr/bin/envrubydata_file='~/path/to/file.txt'file=File.open(data_file,'r')但是我得到“没有这样的文件或目录”(该文件确实存在于该目录中)。如果我将该文件路径作为命令行参数,它会起作用,例如:#!/usr/bin/envrubyfile=File.open(ARGV[0],'r')然后从命令行运行,如:rubyscript.cgi~/path/to/file.txt关于如何让它以第一种方式工作的任何想法? 最佳答案

  4. 用于从 Open3.popen3 标准输出中提取值的正则表达式 - 2

    如何获取外部命令的输出并从中提取值?我有这样的东西:stdin,stdout,stderr,wait_thr=Open3.popen3("#{path}/foobar",configfile)if/exit0/=~wait_thr.value.to_srunlog.puts("Foobarexitednormally.\n")puts"Testcompleted."someoutputvalue=stdout.read("TX.*\s+(\d+)\s+")puts"Outputvalue:"+someoutputvalueend我没有在标准输出上使用正确的方法,因为Ruby告诉我它不能

  5. ruby-on-rails - 无法捆绑安装 'open-uri' - 2

    关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。关于您编写​​的代码问题的问题必须在问题本身中描述具体问题—并且包括有效代码以重现它。参见SSCCE.org寻求指导。关闭8年前。Improvethisquestion我是Rails的新手。我正在制作一个网络应用程序,我在其中使用nokogiri搜索不同的网站以从中提取文本。所以在Gemfile中,我写了require'nokogiri'和'open-uri',但是当我捆绑安装时我得到这个错误:Couldnotfindgem'open-uri(>=0)ruby'inthegemsavailableon

  6. Ruby—Open3.popen3/如何打印输出 - 2

    我有一个执行mysql的小ruby脚本导入方式:mysql-u-p-h,但利用Open3.popen3这样做。这就是我到目前为止所拥有的:mysqlimp="mysql-u#{mysqllocal['user']}"mysqlimp这实际上是在做工作,但有一件事困扰着我,与我希望看到的输出有关。如果我将第一行更改为:mysqlimp="mysql-v-u#{mysqllocal['user']}"#notethe-v然后整个脚本永远挂起。我猜,发生这种情况是因为读流和写流相互阻塞,我也猜想stdout需要定期冲洗,以便stdin将继续被消耗。也就是说,只要stdout的buffer已满

  7. HarmonyOS原子化服务开发相关术语 - 2

    术语中文解释Ability原子化服务帮助用户完成任务的原子化服务,和用户的意图进行关联。Fulfillment服务履行通过图标,卡片,语音等形式呈现用户意图。开发者通过接口的方式,处理用户意图,返回内容。Intent意图用于表达用户想要达成的目标或完成的任务。HUAWEIAssistant智能助手“无微不智”的个人助手,通过不断的学习用户的使用习惯,不断的为用户提供贴心的精准的便捷的个性化服务。AISearch全局搜索用户可快速搜索关键词,与之匹配的原子化服务则会出现在搜索结果中。SmartService智慧服务用户订阅原子化服务,在到达特定触发条件(时间、地点、事件)后,卡片推送至用户智能助

  8. ruby-on-rails - OSX 10.7.5 - Ruby on Rails LoadError : Could not open library 'sodium' : dlopen(sodium, 5) - 2

    输入rakedb:create后我得到:LoadError:Couldnotopenlibrary'sodium':dlopen(sodium,5):imagenotfound.Couldnotopenlibrary'libsodium.dylib':dlopen(libsodium.dylib,5):imagenotfound这里还有一些输出。/Users/Mao/.rvm/gems/ruby-2.0.0-p451/gems/ffi-1.9.3/lib/ffi/library.rb:133:in`blockinffi_lib'/Users/Mao/.rvm/gems/ruby-2.0

  9. ruby-on-rails - ruby open ssl api for encrypted key (without nodes option) - 2

    在安装了openssllib的linux机器上,当您执行带有“-nodes”选项的“opensslpkcs12”时,您将获得带有未加密私钥的输出,但如果您跳过–nodes选项,则输出将具有加密的私钥。e.g.opensslpkcs12-intest.pfx-outtest.pem你应该看到像下面这样加密的私钥-----BEGINENCRYPTEDPRIVATEKEY-----MIIFDjBABgkqhkiGG7s=-----ENDENCRYPTEDPRIVATEKEY-----如何使用ruby​​的开放ssl库实现上述目标?这就是我用ruby​​生成私钥的方式:@private_key

  10. ruby - #tty 是什么?在 STDIN 上意味着/在 ruby​​ 中做什么? - 2

    阅读ruby​​文档并没有多大帮助here:Returnstrueifiosisassociatedwithaterminaldevice(tty),falseotherwise.我希望得到一些额外的资源或解释来帮助我更好地理解这一点。对于上下文,我正在编写一个小的命令行程序,它接受文件路径或管道内容到ruby​​可执行文件中,并使用#tty?来确定传入的内容。 最佳答案 好像http://www.jstorimer.com/blogs/workingwithcode/7766125-writing-ruby-scripts-tha

随机推荐