#process #tokio #child-process #terminate #ctrl-c

tokio-process-terminate

tokio子进程终止扩展

5个不稳定版本

0.3.2 2024年1月2日
0.3.1 2024年1月2日
0.3.0 2023年11月15日
0.2.0 2023年11月8日
0.1.0 2023年11月8日

#294 in Unix APIs

Download history 4/week @ 2024-03-17 7/week @ 2024-03-31 35/week @ 2024-04-07 1/week @ 2024-04-21 17/week @ 2024-04-28 81/week @ 2024-05-05 9/week @ 2024-05-12 4/week @ 2024-05-19 19/week @ 2024-05-26 7/week @ 2024-06-02 24/week @ 2024-06-09 61/week @ 2024-06-16 76/week @ 2024-06-23 115/week @ 2024-06-30

277 monthly downloads

MIT/Apache

10KB
165 lines

tokio-process-terminate

扩展了 tokio::process::Child 以终止进程。

use tokio::process::Command;
use tokio_process_terminate::TerminateExt;

#[tokio::main]
async fn main() {
    let mut command = Command::new("sleep")
        .arg("10")
        .spawn()
        .unwrap();
    tokio::time::sleep(std::time::Duration::from_secs(1)).await;
    let exit = command.terminate_wait().await.unwrap();
    dbg!(exit);
    let code = exit.code();
    // On Unix, code should be `None` if the process was terminated by a signal.
    assert!(code.is_none());
}

lib.rs:

扩展了 tokio::process::Child 以终止进程。

use tokio::process::Command;
use tokio_process_terminate::TerminateExt;

#[tokio::main]
async fn main() {
    let mut command = Command::new("sleep")
        .arg("10")
        .spawn()
        .unwrap();
    tokio::time::sleep(std::time::Duration::from_secs(1)).await;
    let exit = command.terminate_wait().await.unwrap();
    dbg!(exit);
    let code = exit.code();
    // On Unix, code should be `None` if the process was terminated by a signal.
    assert!(code.is_none());
}

依赖

~3–13MB
~144K SLoC