#child-process #timeout #wait #waiting #handler #unix #sigchld

bin+lib wait-timeout

一个用于在 Unix 和 Windows 平台上等待子进程的 crate,并指定超时时间。

6 个版本

使用旧的 Rust 2015

0.2.0 2018年11月23日
0.1.5 2017年3月7日
0.1.4 2017年2月10日
0.1.3 2016年2月21日
0.1.0 2015年9月8日

操作系统 中排名 62

Download history 337441/week @ 2024-03-14 349557/week @ 2024-03-21 330126/week @ 2024-03-28 343168/week @ 2024-04-04 353778/week @ 2024-04-11 345615/week @ 2024-04-18 342262/week @ 2024-04-25 352942/week @ 2024-05-02 346612/week @ 2024-05-09 375826/week @ 2024-05-16 368224/week @ 2024-05-23 398644/week @ 2024-05-30 375496/week @ 2024-06-06 388913/week @ 2024-06-13 372669/week @ 2024-06-20 329018/week @ 2024-06-27

每月下载量 1,543,855
用于 1,430 个 crate(直接使用 65 个)

MIT/Apache 协议

18KB
263 行代码(不包括注释)

wait-timeout

Build Status Build status

文档

这是一个 Rust crate,用于等待指定超时时间的 Child 进程。

# Cargo.toml
[dependencies]
wait-timeout = "0.1.5"

lib.rs:

一个 crate,用于等待具有特定超时时间的子进程。

此 crate 是 Unix 和 Windows 平台上等待具有指定超时时间的子进程的能力的实现。在 Windows 上,实现相对简单,只需调用带有超时参数的 WaitForSingleObject 即可,但在 Unix 上,实现则更为复杂。当前的实现注册了一个 SIGCHLD 处理器并初始化了一些全局状态。此处理器也可以在多线程环境中工作。如果您的应用程序正在处理 SIGCHLD,则可能会出现错误。

示例

use std::process::Command;
use wait_timeout::ChildExt;
use std::time::Duration;

let mut child = Command::new("foo").spawn().unwrap();

let one_sec = Duration::from_secs(1);
let status_code = match child.wait_timeout(one_sec).unwrap() {
    Some(status) => status.code(),
    None => {
        // child hasn't exited yet
        child.kill().unwrap();
        child.wait().unwrap().code()
    }
};

依赖项

~43KB