打开新的控制台窗口

时间:2018-07-04 00:01:18

标签: go

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

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

1 个答案:

答案 0 :(得分:5)

下面的代码将在Ubuntu上运行,这是一个示例程序,它将回显输入,除非您键入“新控制台”,在这种情况下,它将在单独的控制台中再次执行。

它通过执行以下操作来实现:

gnome-terminal -e <program>

请注意,这可能是特定于操作系统的,因为每种操作系统版本都有不同的打开新Shell窗口的方式。

例如,在Windows中,可以使用以下方法实现相同的目的:

cmd /C start <program>

(尽管我现在无法测试)

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)`)
    }
}