本文简要介绍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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。