golang打开第二个终端/控制台

时间:2014-10-17 02:17:38

标签: go terminal console window

我一直在环顾四周,找不到像golang这样的问题。

在golang中是否有办法打开第二个控制台/终端窗口并向其发送输出? 我基本上想要使用一个终端进行输入,另一个用于持续输入信息,这些信息将在程序需要时在窗口中更新,因此我不想覆盖用户当前在第一个终端中输入的内容。

更新

我一直在研究一些想法,并且使用exec函数,你可以运行终端命令,例如windows“start”函数,它打开另一个终端和。这是我已经做到的,现在我只需要添加一个管道,以便可执行文件“node.exe”将从中读取。这显然是使用exec库中的cmd结构完成的。我会更新,一旦我得到它,我会发布我的答案。

package main

import (
    "log"
    "os/exec"
)

func main(){
    cmd := exec.Command("cmd","/C","start","node.exe")
    err := cmd.Start()
    if err != nil {
        log.Fatal(err)
    }
    for i := 0; i < 100; i++{
        log.Println(i)
    }
}

这在另一个终端运行node.exe,同时它循环并将0-99打印到当前终端

1 个答案:

答案 0 :(得分:1)

为了澄清,这个&#34;打开一个新的控制台窗口&#34; 似乎非常特定于操作系统。

那说明为什么不只是将日志信息输出到文件然后打开一个新窗口并在该文件上运行tail

通常,如果您要获得重要的日志记录信息,应该转到文件。所以这部分只是开始的好习惯。一旦你有了这个日志文件,在文件上运行tail似乎是完全合理的。

您在此基本构建的是&#34;客户端/服务器&#34;图案。这种行为的规范是提供一个&#34;服务器&#34;程序,然后通过&#34;客户端&#34;连接到它程序。只需看看MongoDB或Redis或MySQL,它们附带一些运行服务器的守护进程和一个单独的客户端。

根据您的说明,您尝试同时执行这两项操作并将其设为默认行为。即使这样可行,但对于试图使用该程序的任何人来说,这似乎都很奇怪。而且你需要处理奇怪的案件。就像我分叉&#34;服务器&#34;部分(记录窗口),然后访问该窗口并点击CTRL+C?这会杀死服务器吗?在第一个窗口中客户端会发生什么?

即使你设法让它发挥作用,尝试做二合一也会变得混乱。