5 stable releases

2.0.0 Jan 26, 2024
1.0.4 Jan 26, 2024
1.0.3 Jan 24, 2024
1.0.2 Aug 12, 2022
1.0.1 Feb 5, 2020

#54 in Windows APIs

Download history 1907/week @ 2024-02-02 1820/week @ 2024-02-09 1740/week @ 2024-02-16 1894/week @ 2024-02-23 2828/week @ 2024-03-01 2455/week @ 2024-03-08 1995/week @ 2024-03-15 1675/week @ 2024-03-22 1885/week @ 2024-03-29 1807/week @ 2024-04-05 1636/week @ 2024-04-12 1384/week @ 2024-04-19 1799/week @ 2024-04-26 1497/week @ 2024-05-03 1916/week @ 2024-05-10 1711/week @ 2024-05-17

7,238 downloads per month
Used in 8 crates (3 directly)

MIT/Apache

24KB
371 lines

win32job

docs.rs crates.io

Documentation

A safe API for Windows' job objects, which can be used to set various limits to processes associated with them.

[dependencies]
win32job = "2"

Examples

Limit the amount of memory that will be available for this process (allocating more memory is still possible, but it will be paged):

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(())
}

Force any created sub processes to exit when the main process exits:

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(())
}

License

The win32job crate is licensed under either of

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

at your option.

Dependencies

~138MB
~2.5M SLoC