【问题标题】:Launching a new command window from Golang in Windows在 Windows 中从 Golang 启动新的命令窗口
【发布时间】:2015-05-12 05:31:29
【问题描述】:

我正在编写一个仅使用命令窗口 (CMD) 进行用户输入和输出的 go 应用程序。我需要启动另一个使用自己的窗口的应用程序实例。

我尝试使用“os/exec”包,但这只会为 GUI 应用程序创建一个窗口。我尝试使用cmd /c ___ 执行应用程序,但它仍然没有创建单独的窗口。

有没有办法使用自己的窗口、标准输入和标准输出来启动非 GUI 应用程序?

【问题讨论】:

    标签: windows go


    【解决方案1】:

    我找到了!

    诀窍是在cmd /c之后使用“开始”作为命令

    代码如下:

    cmd:= exec.Command("cmd","/C","start",_path_to_executable_) err=cmd.Start()

    【讨论】:

    • 您实际上可以将自己的问题标记为答案。
    【解决方案2】:

    没有中介cmd,也可以通过修改process creation flags

    import (
        "log"
        "os/exec"
        "syscall"
    )
    const (
        CREATE_NEW_CONSOLE = 0x10
    )
    func main() {
        cmd := exec.Cmd{Path: "c:\\windows\\system32\\wsl.exe",
            Args: []string{"-e", "sudo", "aptitude"},
            SysProcAttr: &syscall.SysProcAttr{
                CreationFlags:    CREATE_NEW_CONSOLE,
                NoInheritHandles: true,
            },
        }
        err := cmd.Run()
        log.Print(err)
    }
    

    NoInheritHandles 让窗口拥有自己的标准输入和标准输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-26
      • 2023-03-29
      • 2014-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-14
      相关资源
      最近更新 更多