英文:
Get the current process (executable) name in Go?
问题
我在这里寻找的是C语言中argv[0]
的等价物。
flag
包只提供了对命令行参数的访问,但没有提供可执行文件的名称。
虽然可以使用Getpid()
获取进程信息,但我还没有找到可以访问整个命令行的方法。syscall
命令的GetCommandLine()
似乎只在Windows上可用。
英文:
What I am looking for here is the equivalent of C's argv[0]
.
The flag
package only gives access to command line arguments, but not the executable name.
While one can get the process with Getpid()
, I haven't found something that will give me access to the whole command line. The syscall
command GetCommandLine()
seems only to be available on Windows.
答案1
得分: 45
在Go语言中,传统的C语言中的argv[0]
在os.Args[0]
中是可用的。flags包只是简单地处理切片os.Args[1:]
。
英文:
The traditional argv[0]
in C is available in os.Args[0]
in Go. The flags package simply processes the slice os.Args[1:]
答案2
得分: 31
一个更好的方法如下:
filename := filepath.Base(os.Args[0])
这将只显示应用程序的名称,并去除路径。
英文:
A better way as follows:
filename := filepath.Base(os.Args[0])
This will present only the application name and remove the path for you.
答案3
得分: 23
自Go 1.8版本以来,答案是os.Executable()
。与其他语言类似,还有os.Args[0]
。一个重要的区别是os.Executable()
保证返回一个绝对路径。
英文:
Since Go 1.8, the answer is os.Executable()
. Similar to other languages, there is also os.Args[0]
. One important distinction is that os.Executable()
is guaranteed to return an absolute path.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论