我有一个Golang代码,该代码必须运行一个独立的子进程。
我的实现的Linux版本是syscall.ForkExec这样的。
syscall.ForkExec(my_program, []string{}, nil)
Run Code Online (Sandbox Code Playgroud)
但是我找不到Windows实现。我发现使用的命题START /B。
cmd := exec.Command("START", "/B", my_program)
cmd.Start()
Run Code Online (Sandbox Code Playgroud)
不幸的是,START找不到,并且我没有其他使用Golang的解决方案。
start不是独立的应用程序,它是 Windows 命令行解释器 ( cmd.exe)的(内部)命令(详细信息:命令行参考/开始),因此您需要一个“外壳”来运行该start命令。
cmd.exe与/C参数一起使用,并传递start和您的应用程序运行。
就像在这个例子中:
s := []string{"cmd.exe", "/C", "start", `c:\path\to\your\app\myapp.exe`}
cmd := exec.Command(s[0], s[1:]...)
if err := cmd.Run(); err != nil {
log.Println("Error:", err)
}
Run Code Online (Sandbox Code Playgroud)
或者没有命令切片:
cmd := exec.Command("cmd.exe", "/C", "start", `c:\path\to\your\app\myapp.exe`)
if err := cmd.Run(); err != nil {
log.Println("Error:", err)
}
Run Code Online (Sandbox Code Playgroud)
如果您不想要启动的应用程序的终端窗口,您也可以像这样传递/b参数start:
cmd := exec.Command("cmd.exe", "/C", "start", "/b", `c:\path\to\your\app\myapp.exe`)
if err := cmd.Run(); err != nil {
log.Println("Error:", err)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2032 次 |
| 最近记录: |