如何启动Go中不是文件的进程(例如打开网页)

San*_*ira 9 go

我想打开一个Web浏览器:

c, err := exec.Command("http://localhost:4001").Output()
if err != nil {
    fmt.Printf("ERROR: %v, %v\n",err,c)
} else {
    fmt.Printf("OK:%v\n",c)
}
Run Code Online (Sandbox Code Playgroud)

我得到了错误

ERROR: exec: "http://localhost:4001": file does not exist
Run Code Online (Sandbox Code Playgroud)

编辑:我想要实现的目标与Windows和C#中的相同:

Process.Start("http://localhost:4001")
Run Code Online (Sandbox Code Playgroud)

有了它,您的默认浏览器的新实例将启动显示URL

tux*_*21b 16

"http://localhost:4001/"是一个URL,它无法执行,但您可以执行Web浏览器(例如firefox)并将URL作为第一个参数传递.

在Windows,OS X和Linux帮助程序上,可用于启动默认Web浏览器.我想FreeBSD和Android有类似的东西,但我不确定.以下代码段应适用于Windows,OS X和大多数Linux发行版:

var err error
switch runtime.GOOS {
case "linux":
    err = exec.Command("xdg-open", "http://localhost:4001/").Start()
case "windows", "darwin":
    err = exec.Command("open", "http://localhost:4001/").Start()
default:
    err = fmt.Errorf("unsupported platform")
}
Run Code Online (Sandbox Code Playgroud)


Dav*_*vid 6

在Windows下使用:

exec.Command("cmd", "/c", "start", "http://localhost:4001/").Start()
Run Code Online (Sandbox Code Playgroud)