打开新的控制台窗口

Nic*_*las -2 go

我可以使用什么代码,以便我的golang程序可以打开一个新的控制台窗口?

我有一个程序A正在运行程序B,因此程序B没有控制台窗口(stdin和stdout用于与程序A交互).我希望程序B在新的控制台窗口(以及程序A的控制台窗口)中显示用户友好的信息,以便很容易看到正在发生的事情.

eug*_*ioy 5

下面的代码可以在Ubuntu上运行,它是一个回显输入的示例程序,除非您键入"new console",在这种情况下,在另一个控制台中再次执行.

它通过执行:

gnome-terminal -e <program>
Run Code Online (Sandbox Code Playgroud)

请注意,这可能是特定于操作系统的,因为每种操作系统风格都有不同的方式来打开新的shell窗口.

例如,在Windows中,似乎可以使用以下方法实现:

cmd /C start <program>
Run Code Online (Sandbox Code Playgroud)

(虽然我现在无法测试)

Ubuntu的示例工作程序:

package main

import (
    "fmt"
    "bufio"
    "os"
    "os/exec"
    "log"
)

func main() {
    progPath, err := os.Executable()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(`Enter text to echo (or "new console" to open a new console)`)
    scanner := bufio.NewScanner(os.Stdin)
    for scanner.Scan() {
        text := scanner.Text()
        if text == "new console" {
            cmd:= exec.Command("gnome-terminal","-e", progPath)
            cmd.Start()
        } else {
            fmt.Println(scanner.Text())
        }
        fmt.Println(`Enter text to echo (or "new console" to open a new console)`)
    }
}
Run Code Online (Sandbox Code Playgroud)