diff --git a/src/sys/kernel/mod.rs b/src/sys/kernel/mod.rs index e9db8bf5..52d908d0 100644 --- a/src/sys/kernel/mod.rs +++ b/src/sys/kernel/mod.rs @@ -119,6 +119,27 @@ impl cmp::PartialOrd for Version { } } +/// Returns the maximum process ID number. +/// +/// This is taken from `/proc/sys/kernel/pid_max`. +/// +/// # Example +/// +/// ``` +/// let pid_max = procfs::sys::kernel::pid_max().unwrap(); +/// +/// let pid = 42; // e.g. from user input, CLI args, etc. +/// +/// if pid > pid_max { +/// eprintln!("bad process ID: {}", pid) +/// } else { +/// println!("good process ID: {}", pid); +/// } +/// ``` +pub fn pid_max() -> ProcResult { + read_value("/proc/sys/kernel/pid_max") +} + #[cfg(test)] mod tests { use super::*; @@ -142,4 +163,9 @@ mod tests { fn test_current() { let _ = Version::current().unwrap(); } + + #[test] + fn test_pid_max() { + assert!(pid_max().is_ok()); + } } diff --git a/support.md b/support.md index 671cc3e3..333580b4 100644 --- a/support.md +++ b/support.md @@ -180,7 +180,7 @@ This is an approximate list of all the files under the `/proc` mount, and an ind * [ ] `/proc/sys/kernel/overflowuid` * [ ] `/proc/sys/kernel/panic` * [ ] `/proc/sys/kernel/panic_on_oops` - * [ ] `/proc/sys/kernel/pid_max` + * [x] `/proc/sys/kernel/pid_max` * [ ] `/proc/sys/kernel/powersave-nap` * [ ] `/proc/sys/kernel/printk` * [ ] `/proc/sys/kernel/pty`