在运行时获取可执行文件路径的最佳方法是什么?

时间:2010-05-11 21:31:11

标签: go

如果我的go程序可以用不同的方式执行(cron,monit等等),那么在运行时获取包含可执行文件的目录的最可靠方法是什么?

在python中,这将是变量:

os.path.realpath(__file__)

3 个答案:

答案 0 :(得分:3)

它可能与C中的相同,换句话说,没有便携式的防呆方法。见How do I find the location of the executable in C?

答案 1 :(得分:2)

Andrew Brookins在“Go: How to Get the Directory of the Current File”中提出了一个快速解决方法(不一定是通用的):

  

我最终发现了runtime.Caller()   这将返回有关当前goroutine堆栈的一些详细信息,包括文件路径。

     

我的问题的背景是在共享包中打开一个数据文件   我做的是:

_, filename, _, _ := runtime.Caller(1)
f, err := os.Open(path.Join(path.Dir(filename), "data.csv"))

答案 2 :(得分:-2)

我找到的最好方法是使用os.Getwd()。请参阅此处的文档:golang doc