本文簡要介紹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 current_dir用法及代碼示例
- Rust current用法及代碼示例
- Rust char.is_control用法及代碼示例
- Rust char.is_alphanumeric用法及代碼示例
- Rust char.len_utf16用法及代碼示例
- Rust char.is_digit用法及代碼示例
- Rust char.is_ascii_graphic用法及代碼示例
- Rust concat用法及代碼示例
- Rust char.decode_utf16用法及代碼示例
- Rust char.is_uppercase用法及代碼示例
- Rust catch_unwind用法及代碼示例
- Rust char.to_ascii_lowercase用法及代碼示例
- Rust char.is_ascii_uppercase用法及代碼示例
- Rust canonicalize用法及代碼示例
- Rust create_dir用法及代碼示例
- Rust ctlz用法及代碼示例
- Rust channel用法及代碼示例
- Rust char.escape_unicode用法及代碼示例
- Rust copy_nonoverlapping用法及代碼示例
- Rust char.is_alphabetic用法及代碼示例
- Rust char.is_ascii_control用法及代碼示例
- Rust char.from_u32_unchecked用法及代碼示例
- Rust char.is_ascii_alphabetic用法及代碼示例
- Rust cttz_nonzero用法及代碼示例
- Rust char.eq_ignore_ascii_case用法及代碼示例
注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 Function std::env::current_exe。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。