猿问

查找可执行文件的路径

我使用Go在各种平台上编译了一个程序,并通过调用相对路径或仅通过其名称(如果它在PATH变量中)来运行它。

是否可以找出可执行文件在哪里?

说,我的程序称为“ foo.exe)”。我可以运行./foofoo(如果它在PATH中)../../subdir/subdir/foo

我尝试使用os.Args[0],我想我应该检查程序名称是否包含除“ foo”之外的其他内容。如果是,请使用filepath.Abs,如果否,请使用(我找不到函数名,有一个通过PATH查找以检查程序在哪里的函数)。


守候你守候我
浏览 247回答 3
3回答

慕森王

您可以os.Executable用于在Go 1.8或更高版本上获取可执行文件路径。import (    "os"    "path"    "log")func main() {    ex, err := os.Executable()    if err != nil { log.Fatal(err) }    dir := path.Dir(ex)    log.Print(dir)}

繁华开满天机

这不是特定于Go的(除非go“标准库”包含执行此操作的功能),并且没有可移植的解决方案。有关某些常见平台上的解决方案,请参见例如如何在C中找到可执行文件的位置? 或在没有/ proc / self / exe的情况下查找当前可执行文件的路径。
随时随地看视频慕课网APP

相关分类

Go
我要回答