使用exec只能在后台启动程序

时间:2018-02-26 06:51:36

标签: go exec

我正在尝试通过命令行创建一个调用另一个程序(带有GUI)的程序。

使用os / exec包。外部程序启动,但它始终在后台运行。 (即使我尝试启动" Notepad.exe"或.bat文件然后调用实际程序。)

在任务管理器中,您可以看到该过程但无法与其进行交互。

以下是我尝试过的代码示例:

cmd := exec.Command("cmd.exe", "/C", "start", "\"\"", `Notepad.exe`)

log.Println("cmd.exe", "/C", "start", "\"\"", `Notepad.exe`)

cmd.Stdout = os.Stdout
if err := cmd.Start(); err != nil {
    log.Println("Error: ", err)
}

有没有办法改变代码,以便它启动" Notepad.exe"在某种程度上,它可以通过用户界面进行交互?

我正在尝试使用在Mac上编译的Windows上的程序。

1 个答案:

答案 0 :(得分:0)

您不需要那个空的""参数,只需使用:

cmd := exec.Command("cmd.exe", "/C", "start", "notepad.exe")

notepad.exe也不会向其标准输出写入任何内容,因此您无需进行设置。只需运行它:

s := []string{"cmd.exe", "/C", "start", "notepad.exe"}
log.Println("Starting", s)

cmd := exec.Command(s[0], s[1:]...)
if err := cmd.Run(); err != nil {
    log.Println("Error:", err)
}