Go 使用exec仅在后台启动程序

Go 使用exec仅在后台启动程序,go,exec,Go,Exec,我试图制作一个go程序,通过命令行调用另一个程序(带有GUI) 使用os/exec包。外部程序启动,但始终在后台运行。(即使我尝试启动“Notepad.exe”或.bat文件,然后调用实际程序。) 在任务管理器中,您可以看到流程,但无法与之交互 下面是我一直在试验的代码示例: cmd := exec.Command("cmd.exe", "/C", "start", "\"\"", `Notepad.exe`) log.Println("cmd.exe", "/C", "start", "\"

我试图制作一个go程序,通过命令行调用另一个程序(带有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)
}
有没有办法修改代码,使其以可以通过UI与之交互的方式启动“Notepad.exe”


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

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

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

我发现代码本身运行良好。我想问题出在我的代码中,它用这个部分调用函数。