在Rust中,是否可能将一个函数作为进程运行?

4

Rust中的std::process::Command结构需要一个Command::new(program),其中program是要执行的程序的路径,如下面的示例所示。

let output = if cfg!(target_os = "windows") {
    Command::new("cmd")
            .args(&["/C", "echo hello"])
            .output()
            .expect("failed to execute process")

在Rust中,是否有可能创建一个新的进程来运行函数?


1
如果你在兼容的平台上并且了解一些关于“fork”的知识,可以使用https://docs.rs/nix/0.15.0/nix/unistd/fn.fork.html。我无法找到类似Python的“multiprocessing.Process”的更高级接口。 - turbulencetoo
这引出了一个关键问题。由于函数不一定像进程那样具有状态返回代码,您确定需要进程而不是线程吗? - Sébastien Renauld
是的,你可以使用 fork(),但它非常复杂、容易出错且平台特定。你几乎肯定应该避免使用它,而是使用线程、共享内存或命令行参数。 - Timmmm
1个回答

1
简而言之,你不能仅凭代码就创建一个新进程,需要的信息比这更多。请查看CreateProcess Windows系统调用。
但是,你可以在以下选项之间选择:
  1. 创建线程。
  2. 创建进程,其中可执行文件与正在运行的程序相同,但传递不同的参数以触发你感兴趣的函数的执行。
  3. 创建共享内存段
  4. 创建第三方库,其中包含你的函数,并在原始程序和派生程序之间共享它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接