Tyl*_*Cox 5 terminal console window go
我一直在环顾四周,找不到另一个像 golang 这样的问题。
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)
}
}
Run Code Online (Sandbox Code Playgroud)
这会在另一个终端中运行node.exe,同时它会循环并将0-99打印到当前终端
澄清一下,这个“打开一个新的控制台窗口”似乎非常特定于操作系统。
也就是说,为什么不直接将日志信息输出到文件中,然后打开一个新窗口并tail在该文件上运行呢?
一般来说,如果您需要重要的日志记录信息,则应将其保存到文件中。所以这部分只是一个很好的开始练习。一旦有了该日志文件,tail在该文件上运行似乎就完全合理了。
您在这里基本上构建的是“客户端/服务器”模式。这种行为的规范是提供一个“服务器”程序,然后通过“客户端”程序连接到它。看看 MongoDB、Redis 或 MySQL,它们附带了一些运行服务器和单独客户端的守护进程。
根据您的描述,您正在尝试同时执行这两项操作并将其设为默认行为。即使这有效,对于其他尝试使用该程序的人来说也会显得很奇怪。而且你需要处理奇怪的情况。就像如果我分叉“服务器”部分(日志窗口)然后访问该窗口并点击会发生什么CTRL+C?这会杀死服务器吗?在第一个窗口中客户端会发生什么?
即使你设法让它发挥作用,尝试做二合一也会很混乱。
| 归档时间: |
|
| 查看次数: |
6964 次 |
| 最近记录: |