我使用Go在各种平台上编译了一个程序,并通过调用相对路径或仅通过其名称(如果它在PATH变量中)来运行它。是否可以找出可执行文件在哪里?说,我的程序称为“ foo(.exe)”。我可以运行./foo,foo(如果它在PATH中)../../subdir/subdir/foo。我尝试使用os.Args[0],我想我应该检查程序名称是否包含除“ foo”之外的其他内容。如果是,请使用filepath.Abs,如果否,请使用(我找不到函数名,有一个通过PATH查找以检查程序在哪里的函数)。
3 回答
慕森王
TA贡献1777条经验 获得超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)
}
繁华开满天机
TA贡献1816条经验 获得超4个赞
这不是特定于Go的(除非go“标准库”包含执行此操作的功能),并且没有可移植的解决方案。有关某些常见平台上的解决方案,请参见例如如何在C中找到可执行文件的位置? 或在没有/ proc / self / exe的情况下查找当前可执行文件的路径。
- 3 回答
- 0 关注
- 246 浏览
添加回答
举报
0/150
提交
取消