我使用Go在各種平臺上編譯了一個程序,并通過調(diào)用相對路徑或僅通過其名稱(如果它在PATH變量中)來運行它。是否可以找出可執(zhí)行文件在哪里?說,我的程序稱為“ foo(.exe)”。我可以運行./foo,foo(如果它在PATH中)../../subdir/subdir/foo。我嘗試使用os.Args[0],我想我應(yīng)該檢查程序名稱是否包含除“ foo”之外的其他內(nèi)容。如果是,請使用filepath.Abs,如果否,請使用(我找不到函數(shù)名,有一個通過PATH查找以檢查程序在哪里的函數(shù))。
3 回答

慕森王
TA貢獻1777條經(jīng)驗 獲得超3個贊
您可以os.Executable
用于在Go 1.8或更高版本上獲取可執(zhí)行文件路徑。
import (
"os"
"path"
"log"
)
func main() {
ex, err := os.Executable()
if err != nil { log.Fatal(err) }
dir := path.Dir(ex)
log.Print(dir)
}

繁華開滿天機
TA貢獻1816條經(jīng)驗 獲得超4個贊
這不是特定于Go的(除非go“標(biāo)準庫”包含執(zhí)行此操作的功能),并且沒有可移植的解決方案。有關(guān)某些常見平臺上的解決方案,請參見例如如何在C中找到可執(zhí)行文件的位置? 或在沒有/ proc / self / exe的情況下查找當(dāng)前可執(zhí)行文件的路徑。
- 3 回答
- 0 關(guān)注
- 272 瀏覽
添加回答
舉報
0/150
提交
取消