Go 使用exec仅在后台启动程序
我试图制作一个go程序,通过命令行调用另一个程序(带有GUI) 使用os/exec包。外部程序启动,但始终在后台运行。(即使我尝试启动“Notepad.exe”或.bat文件,然后调用实际程序。) 在任务管理器中,您可以看到流程,但无法与之交互 下面是我一直在试验的代码示例: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", "\"
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)
}
我发现代码本身运行良好。我想问题出在我的代码中,它用这个部分调用函数。