代码之家  ›  专栏  ›  技术社区  ›  dimo414

如何将子进程的退出代码无损地传播为我自己的程序的退出代码

  •  0
  • dimo414  · 技术社区  · 5 年前

    std::process::ExitStatus 不保证提供 exit code ,例如如果子进程由于信号而终止。我知道我可以通过 std::os::unix::process 但是 signal() 可能同样会回来 None .

    如果我想让我的Rust进程以与子进程完全相同的状态退出,我该怎么做?我认为原始代码用于构建 ExitStatus 是我想要的价值,所以我想如果有 get_raw() -> i32 我可以像这样使用它 std::process::exit(status.get_raw()) ,但不存在这样的方法。文档中的示例似乎丢失了信息。

    0 回复  |  直到 5 年前
        1
  •  2
  •   HHK    5 年前

    如果子进程由于信号而终止(例如,当被终止或分段故障时),则不会有退出代码, ExitStatus::code() 会回来的 None 在这种情况下。因此,在这种情况下,您无法“使用完全相同的退出代码”退出。

    实用的解决方案是发明一个退出代码,在孩子通过信号终止的情况下,你的程序会用它退出。