rust 如何为加载到内存中的程序创建一个新进程?

b1uwtaje  于 2023-03-08  发布在  其他
关注(0)|答案(1)|浏览(240)

有一个包含程序的字节数组。如何从Rust代码在新进程中运行它?
就像这样:

const PROGRAM: &[u8] = include_bytes!("proxy.exe");

fn main() {
    CreateNewProccess(PROGRAM);
}
wnavrhmk

wnavrhmk1#

运行嵌入式可执行文件最直观的方法是将其写入磁盘(即使是临时的),然后才运行它。下面是在Rust中如何执行此操作。

let program = {
    let mut p = std::env::current_dir()?;
    p.push("proxy.exe");
    p
};
std::fs::write(&program, PROGRAM)?;

let child = std::process::Command::new(program)
    .spawn()?;

根据您的用例,可能不值得像这样将可执行文件存储在主程序中。
另见:

相关问题