获取当前文件的绝对路径,哪怕是被其他程序调用,也是获取当前文件的绝对路径,怎么做呢?
因为我要用crontab去执行一个golang文件,我要获取golang文件当前的路径,而不是/root路径,
比如说我的golang位于/app/scripts/gosrc/main.go,我想在任意位置执行golang程序都能获得这个路径
获取当前文件的绝对路径,哪怕是被其他程序调用,也是获取当前文件的绝对路径,怎么做呢?
因为我要用crontab去执行一个golang文件,我要获取golang文件当前的路径,而不是/root路径,
比如说我的golang位于/app/scripts/gosrc/main.go,我想在任意位置执行golang程序都能获得这个路径
_, file, line, ok = runtime.Caller(calldepth)
file对应的是全路径名称, line行数
calldepth int类型填 0123
例子:
func Test() {
Test1()
}
func Test1() {
Test2()
}
func Test2() {
_, file, line, ok = runtime.Caller(calldepth)
}
这边的calldepth填012就分别对应了Test2 Test1 Test中的对应调用地方
你这么做其实是不对的做法,
即使 go run main.go 看似是在运行main文件,但其实
go run main.go = go build main.go -o main + ./main
他都是二进制文件了,你获取到源文件其实是没有任何意义的。
7 回答5.3k 阅读
6 回答6.8k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答3.3k 阅读
2 回答905 阅读✓ 已解决
2 回答2.2k 阅读
1 回答2.2k 阅读
获取源文件路径,可以用 runtime.Caller
=========================================
os.Executable
得到启动当前进程的可执行文件的路径与文件名。