5个稳定版本

2.0.0 2024年1月26日
1.0.4 2024年1月26日
1.0.3 2024年1月24日
1.0.2 2022年8月12日
1.0.1 2020年2月5日

#7 in #windows-api

Download history 1567/week @ 2024-04-23 1637/week @ 2024-04-30 1632/week @ 2024-05-07 2045/week @ 2024-05-14 1865/week @ 2024-05-21 1152/week @ 2024-05-28 2356/week @ 2024-06-04 1767/week @ 2024-06-11 2178/week @ 2024-06-18 2018/week @ 2024-06-25 1188/week @ 2024-07-02 1892/week @ 2024-07-09 1290/week @ 2024-07-16 1657/week @ 2024-07-23 1653/week @ 2024-07-30 1392/week @ 2024-08-06

6,357 每月下载量
16 个crate中使用 (5 直接)

MIT/Apache

24KB
371 代码行

win32job

docs.rs crates.io

文档

Windows作业对象的安全API,可用于设置与其关联的进程的各种限制。

[dependencies]
win32job = "2"

示例

限制此进程可用的内存量(分配更多内存仍然可能,但将被分页)

use win32job::{Job, ExtendedLimitInfo};

fn main() -> Result<(), Box<dyn std::error::Error>>  {
    let mut info = ExtendedLimitInfo::new();

    info.limit_working_memory(1 * 1024 * 1024, 4 * 1024 * 1024);

    let job = Job::create_with_limit_info(&mut info)?;

    job.assign_current_process()?;
    
    Ok(())
}

强制任何创建的子进程在主进程退出时退出

use win32job::Job;
use std::process::Command;

fn main() -> Result<(), Box<dyn std::error::Error>>  {
    let job = Job::create()?;
    
    let mut info = job.query_extended_limit_info()?;

    info.limit_kill_on_job_close();

    job.set_extended_limit_info(&mut info)?;
    
    job.assign_current_process()?;

    Command::new("cmd.exe")
            .arg("/C")
            .arg("ping -n 9999 127.0.0.1")
            .spawn()?;

    // The cmd will be killed once we exit, or `job` is dropped.
    
    Ok(())
}

许可证

根据您的选择,win32job crate许可协议为以下之一

Apache License, Version 2.0, (LICENSE-APACHE or https://apache.ac.cn/licenses/LICENSE-2.0)
MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)

依赖项

~127MB
~2M SLoC