【发布时间】:2021-11-02 16:14:59
【问题描述】:
我有一个 Golang 代码,它必须运行一个分离的子进程。
我的 Linux 版本使用 syscall.ForkExec 就像这样。
syscall.ForkExec(my_program, []string{}, nil)
但我找不到 Windows 实现。我找到了一个使用START /B 的提议。
cmd := exec.Command("START", "/B", my_program)
cmd.Start()
很遗憾,找不到START,我没有其他使用 Golang 的解决方案。
【问题讨论】:
-
START是一个程序吗?它在你的道路上吗?是否缺少.exe扩展名?工作ForkExec使用的确切参数是什么(尽管 Linux 实现也应该使用os/exec包,而不是直接使用syscall) -
你应该看看
StartProcessgolang.org/pkg/os/#StartProcess -
@Ravi:
os/exec应该是首选,来自文档:它包装了 os.StartProcess 以便更轻松地重新映射标准输入和标准输出,将 I/O 与管道连接,以及执行其他操作调整。 -
START是命令行中可用的程序,但我无法在C:\Windows\System32中找到它。对于 Linux,我使用syscall分离子进程而不是os/exec。 -
@JimB
start是 Windows 命令行解释器 (cmd.exe) 的(内部)命令。 Details.