dongxing4643
2013-04-19 03:46
浏览 86
已采纳

您如何确定go中当前正在运行的可执行文件的完整路径?

I've been using this function on osx:

// Shortcut to get the path to the current executable                      
func ExecPath() string {                                                   
  var here = os.Args[0]                                                    
  if !strings.HasPrefix(here, "/") {                                       
    here, _ = exec.LookPath(os.Args[0])                                    
    if !strings.HasPrefix(here, "/") {                                     
      var wd, _ = os.Getwd()                                               
      here = path.Join(wd, here)                                           
    }                                                                      
  } 
  return here                                                              
}

...but its pretty messy, and it doesn't work on windows at all, and certainly not in git-bash on windows.

Is there a way of doing this cross platform?

NB. Specifically that args[0] depends on how the binary is invoked; it is in some cases only the binary itself, eg. "app" or "app.exe"; so you can't just use that.

图片转代码服务由CSDN问答提供 功能建议

我一直在osx上使用此功能:

   //获取当前可执行文件路径的快捷方式
func ExecPath()字符串{
 var here = os.Args [0] 
 if!strings.HasPrefix(此处,“ /”){
在这里,_ =  exec.LookPath(os.Args [0])
 if!strings.HasPrefix(here,“ /”){
 var wd,_ = os.Getwd()
 here = path.Join(wd,here)  
} 
} 
返回此处
} 
   
 
 

...但是它很凌乱,并且根本无法在Windows上运行,并且 当然不在git-bash o中 n个窗口。

是否可以使用此跨平台的方法?

NB。 具体来说,args [0]取决于二进制文件的调用方式。 在某些情况下,它仅是二进制本身,例如。 “ app”或“ app.exe”; 所以你不能只使用它。

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新

相关推荐 更多相似问题