當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Rust current_exe用法及代碼示例


本文簡要介紹rust語言中 Function std::env::current_exe 的用法。

用法

pub fn current_exe() -> Result<PathBuf>

返回當前運行的可執行文件的完整文件係統路徑。

特定於平台的行為

如果可執行文件是通過符號鏈接調用的,則某些平台將返回符號鏈接的路徑,而其他平台將返回符號鏈接目標的路徑。

如果可執行文件在運行時被重命名,平台可能會返回加載時的路徑而不是新路徑。

錯誤

獲取當前可執行文件的路徑是特定於平台的操作,可能由於多種原因而失敗。一些錯誤可能包括但不限於文件係統操作失敗或一般係統調用失敗。

安全

此函數的輸出不應用於可能具有安全隱患的任何內容。例如:

fn main() {
    println!("{:?}", std::env::current_exe());
}

在 Linux 係統上,如果編譯為 foo

$ rustc foo.rs
$ ./foo
Ok("/home/alex/foo")

並且您對程序進行了硬鏈接:

$ ln foo bar

當你運行它時,你不會得到原始可執行文件的路徑,你會得到硬鏈接的路徑:

$ ./bar
Ok("/home/alex/bar")

如果使用不當,lead to privilege escalation 就會發現這種行為。

例子

use std::env;

match env::current_exe() {
    Ok(exe_path) => println!("Path of this executable is: {}",
                             exe_path.display()),
    Err(e) => println!("failed to get current exe path: {}", e),
};

相關用法


注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 Function std::env::current_exe。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。