登录
首页 >  Golang >  Go问答

使用 Golang 在 Windows 上启动分离进程

来源:Golang技术栈

时间:2023-04-12 20:19:19 194浏览 收藏

本篇文章向大家介绍《使用 Golang 在 Windows 上启动分离进程》,主要包括golang,具有一定的参考价值,需要的朋友可以参考一下。

问题内容

我有一个 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不是独立的应用程序,它是 Windows 命令行解释器 ( cmd.exe) 的(内部)命令(详细信息:[命令行参考 / Start](https://docs.microsoft.com/en-us/previous-versions/windows/it- pro/windows-xp/bb491005(v=technet.10))),因此您需要一个“shell”来运行该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)
}

或者没有命令切片:

cmd := exec.Command("cmd.exe", "/C", "start", `c:\path\to\your\app\myapp.exe`)
if err := cmd.Run(); err != nil {
    log.Println("Error:", err)
}

如果您不想要已启动应用程序的终端窗口,您也可以将/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)
}

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表