我可以使用什么代码来使golang程序打开新的控制台窗口?
我有一个运行程序B的程序A,因此没有程序B的控制台窗口(stdin和stdout用于与程序A进行交互)。我希望程序B在新的控制台窗口(以及程序A的控制台窗口)中显示用户友好的信息,以便轻松查看正在发生的情况。
答案 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)`)
}
}