Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
golang开放第二终端/控制台_Go_Terminal_Console_Window - Fatal编程技术网

golang开放第二终端/控制台

golang开放第二终端/控制台,go,terminal,console,window,Go,Terminal,Console,Window,我一直在四处寻找,找不到像这样的问题 在golang是否有办法打开第二个控制台/终端窗口并向其发送输出? 我基本上希望使用一个终端输入信息,另一个终端有一个持续不断的信息源,只要程序需要,它就会在窗口中更新,所以我不想覆盖用户当前在第一个终端中输入的内容 更新: 我一直在研究一些想法,使用exec函数,您可以运行终端命令,例如windows“开始”函数,它可以打开另一个终端并启动。这就是我所做的,现在我只需要添加一个管道,以便可执行文件“node.exe”可以从中读取。这显然是使用exec库中的

我一直在四处寻找,找不到像这样的问题

在golang是否有办法打开第二个控制台/终端窗口并向其发送输出? 我基本上希望使用一个终端输入信息,另一个终端有一个持续不断的信息源,只要程序需要,它就会在窗口中更新,所以我不想覆盖用户当前在第一个终端中输入的内容

更新:

我一直在研究一些想法,使用exec函数,您可以运行终端命令,例如windows“开始”函数,它可以打开另一个终端并启动。这就是我所做的,现在我只需要添加一个管道,以便可执行文件“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)
    }
}
主程序包
进口(
“日志”
“os/exec”
)
func main(){
cmd:=exec.Command(“cmd”、“/C”、“start”、“node.exe”)
错误:=cmd.Start()
如果错误!=零{
log.Fatal(错误)
}
对于i:=0;i<100;i++{
log.Println(i)
}
}
它在另一个终端中运行node.exe,同时循环并将0-99打印到当前终端

为了澄清这一点,“打开一个新的控制台窗口”似乎非常特定于操作系统

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

一般来说,如果要获得重要的日志信息,应该将其放入文件中。因此,这一部分只是一个良好的实践开始。一旦你有了这个日志文件,在这个文件上运行
tail
似乎是完全合理的

这里基本上构建的是“客户机/服务器”模式。这种行为的标准是提供一个“服务器”程序,然后通过“客户端”程序连接到它。看看MongoDB、Redis或MySQL,它们附带了一些运行服务器和独立客户端的守护程序

根据您的描述,您试图同时执行这两项操作,并将其作为默认行为。即使这样做行得通,对其他试图使用该程序的人来说也会显得很奇怪。你需要处理一些奇怪的案子。比如,如果我拨出“服务器”部分(日志窗口),然后访问该窗口并点击
CTRL+C
,会发生什么?这会杀死服务器吗?在第一个窗口中,客户端会发生什么情况


即使你成功地做到了,尝试做2合1也会很麻烦。

不是一个*nix疯子,我不确定是否有一种“本地”的方法可以做到这一点。也就是说,您可以始终设置“客户端”和“服务器”。。客户机接受输入,服务器输出流。我已经想到了,但这不是我最喜欢的方式。从别人的经验中知道它可能不是本地的东西是很有帮助的。在Azul3D中,示例中有一个名为Azul3D_info的文件,该文件创建一个窗口并输出其中的信息。但是,我不确定你是否可以控制主控制台,你必须从Windows资源管理器启动可执行文件,否则你会收到一条消息,程序停止工作。哦,太棒了,我去看看。感谢Dippo。仅供参考:在linux上有一些很好的例子
,为什么不将日志信息输出到一个文件中,然后打开一个新窗口并在该文件上运行tail?
我这里有一个例子。我正在尝试启动一个新的gnome终端,以便在程序在主用户窗口中运行时将expvarmon启动到另一个窗口中。