当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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