第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

可執(zhí)行文件是否可以動(dòng)態(tài)解析其在文件系統(tǒng)上的位置或其實(shí)際的“休息位置”,而只是用戶的工作目錄?

可執(zhí)行文件是否可以動(dòng)態(tài)解析其在文件系統(tǒng)上的位置或其實(shí)際的“休息位置”,而只是用戶的工作目錄?

Go
幕布斯7119047 2021-11-15 16:48:41
如果我有一個(gè)可執(zhí)行文件/usr/bin并在我位于~/dev/wikis/(即user@HAL:~/dev/wikis$ the_executable)時(shí)調(diào)用它,可執(zhí)行文件中的ioutil.ReadFile("file.txt")函數(shù)將查找/home/user/dev/wikis/file.txt,但是否可以/usr/bin/file.txt在用戶或開(kāi)發(fā)人員事先不知道可執(zhí)行文件的情況下使其查找位于/usr/bin(也可以位于/home/user/dev/my_program/the_executable)?然后添加了一層復(fù)雜性,另一種情況,說(shuō)我把從可執(zhí)行符號(hào)鏈接在/usr/bin與可執(zhí)行文件實(shí)際上是的“來(lái)源” /home/user/dev/my_program/the_executable,我想程序知道/home/user/dev/my_program/在這種情況下,動(dòng)態(tài)的,而不是/usr/bin.簡(jiǎn)而言之:可執(zhí)行文件如何動(dòng)態(tài)解析其在文件系統(tǒng)上的位置或其實(shí)際“休息位置”與用戶的工作目錄(可以很容易地通過(guò)os.Getwd()以及ioutil.ReadFile使用其他命令或使用類似的東西來(lái)解析路徑) )。我最好的辦法是我必須獲得正在運(yùn)行的程序 ( os.Getpid)的 PID,然后以某種方式使用該整數(shù)來(lái)訪問(wèn)有關(guān)在該 PID 下運(yùn)行的程序?qū)嵗男畔ⅲM撔畔淠夸浀淖址?,我可以然后使用?
查看完整描述

3 回答

?
ibeautiful

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊

在Linux(和其他Unixy系統(tǒng)也許),你會(huì)發(fā)現(xiàn)一個(gè)符號(hào)鏈接到實(shí)際運(yùn)行可執(zhí)行文件作為pid/proc/pid/exe,檢查一個(gè)會(huì)給你想要的東西,如果它是一個(gè)二進(jìn)制。如果它是某種腳本,那可能只會(huì)給解釋器。

但請(qǐng)注意,完全有可能啟動(dòng)一個(gè)進(jìn)程并在它運(yùn)行時(shí)刪除可執(zhí)行文件,留下懸空鏈接或什么都不留下。


查看完整回答
反對(duì) 回復(fù) 2021-11-15
?
慕妹3146593

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊

這將取決于語(yǔ)言,但據(jù)我所知,大多數(shù)編程語(yǔ)言都可以獲取程序的“基本名稱”(例如 helloworld)或完整路徑(例如 /usr/bin/helloworld)。通常這作為程序的第一個(gè)參數(shù)提供,由操作系統(tǒng)/運(yùn)行時(shí)庫(kù)/解釋器等插入。 例如,在 C 中,argv[0](因?yàn)槲覀冊(cè)?C 中從 0 開(kāi)始計(jì)數(shù))給出當(dāng)前的名稱程序,但是調(diào)用過(guò)程會(huì)初始化這個(gè)特殊參數(shù),因此確切的格式可能會(huì)有所不同,并且在 bash 中, $0 將擴(kuò)展為執(zhí)行時(shí)給定的腳本路徑(我認(rèn)為)。從這里:https : //gobyexample.com/command-line-arguments, “os.Args 提供對(duì)原始命令行參數(shù)的訪問(wèn)。請(qǐng)注意,此切片中的第一個(gè)值是程序的路徑,而 os.Args[1:] 保存程序的參數(shù)?!?nbsp;所以看起來(lái)你不需要擔(dān)心 /proc 但如果你有興趣,我如何在 C 中找到可執(zhí)行文件的位置?

查看完整回答
反對(duì) 回復(fù) 2021-11-15
?
HUX布斯

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊

導(dǎo)出的變量os.Args(它是一個(gè)切片:)[]string保存程序參數(shù),它的第一個(gè)元素是帶有完整路徑的可執(zhí)行文件名稱。


如果可執(zhí)行文件不是符號(hào)鏈接,您可以使用path或filepath包來(lái)獲取可執(zhí)行文件的文件夾,如下所示:


folder := filepath.Dir(os.Args[0])

并且您可以使用os.Readlink()來(lái)解析符號(hào)鏈接。


并且要測(cè)試您的可執(zhí)行文件是否是符號(hào)鏈接,您可以使用os.Lstat()which 不嘗試跟隨鏈接(而不是os.Stat())。


所以你的最終版本應(yīng)該是這樣的:


s := os.Args[0]

fi, err := os.Lstat(s)

if err != nil {

    panic(err) // Failed to get stats

}


// Check if it's a symlink and if so, try to resolve it

if fi.Mode()&os.ModeSymlink != 0 {

    if s, err = os.Readlink(s); err != nil {

        panic(err) // Failed to resolve symlink

    }

}

s = filepath.Dir(s) // We only want the folder part


查看完整回答
反對(duì) 回復(fù) 2021-11-15
  • 3 回答
  • 0 關(guān)注
  • 236 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)