【问题标题】:Get the current process (executable) name in Go?在 Go 中获取当前进程(可执行文件)名称?
【发布时间】:2020-02-13 02:27:01
【问题描述】:

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

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

虽然可以使用Getpid() 获取该过程,但我还没有找到可以让我访问整个命令行的东西。 syscall 命令 GetCommandLine() 似乎只在 Windows 上可用。

【问题讨论】:

    标签: go


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      更好的方法如下:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 谢谢。我没有注意到这一点。大多数时候我想要 os.Args[0],但了解 os.Executable() 很有用。
        猜你喜欢
        • 2012-01-14
        • 1970-01-01
        • 2021-11-26
        • 1970-01-01
        • 1970-01-01
        • 2010-10-01
        • 1970-01-01
        • 2011-01-12
        • 2011-08-27
        相关资源
        最近更新 更多