在Go中获取当前进程(可执行文件)名称?

时间:2011-01-31 11:46:57

标签: go

我在这里寻找的是相当于C的argv[0]

flag包只能访问命令行参数,但不能访问可执行文件名。

虽然可以使用Getpid()获取进程,但我找不到能够访问整个命令行的内容。 syscall命令GetCommandLine()似乎只能在Windows上使用。

3 个答案:

答案 0 :(得分:34)

C中的传统argv[0]在Go的os.Args[0]中为available。 flags包只处理切片os.Args[1:]

答案 1 :(得分:7)

从Go 1.8开始,答案为os.Executable()。与其他语言类似,也有os.Args[0]。一个重要的区别是保证os.Executable()返回绝对路径。

答案 2 :(得分:2)

更好的方法如下:

filename:=filepath.Base(os.Args[0])

这将仅显示应用程序名称并为您删除路径。