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

Pin*_*hle 26 go

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

flag程序包仅提供对命令行参数的访问,但不提供对可执行文件名的访问.

虽然可以使用Getpid(),但我没有找到能让我访问整个命令行的内容.该syscall 命令GetCommandLine()似乎只能在Windows上使用.

nos*_*nos 35

传统argv[0]的C是可以os.Args[0]在Go.flags包简单地处理切片os.Args[1:]


Cyb*_*nce 19

更好的方法如下:

filename:=filepath.Base(os.Args[0])
Run Code Online (Sandbox Code Playgroud)

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


Rod*_*lho 13

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