diff options
| author | Thayne McCombs <astrothayne@gmail.com> | 2017-10-05 23:49:36 -0600 |
|---|---|---|
| committer | Thayne McCombs <astrothayne@gmail.com> | 2017-10-06 01:15:49 -0600 |
| commit | 6ff6b935608f7c5b6b53517f3fc5bafec911a79d (patch) | |
| tree | b0312b09d1013b9c73aa0011a339f1201569c52c | |
| parent | a4af9309d060b76ddaeb91c52d9f0e05dc97264c (diff) | |
| download | rust-6ff6b935608f7c5b6b53517f3fc5bafec911a79d.tar.gz rust-6ff6b935608f7c5b6b53517f3fc5bafec911a79d.zip | |
Add current_pid function
Fixes #44971
| -rw-r--r-- | src/libstd/process.rs | 18 | ||||
| -rw-r--r-- | src/libstd/sys/redox/os.rs | 4 | ||||
| -rw-r--r-- | src/libstd/sys/unix/os.rs | 4 | ||||
| -rw-r--r-- | src/libstd/sys/windows/os.rs | 4 |
4 files changed, 30 insertions, 0 deletions
diff --git a/src/libstd/process.rs b/src/libstd/process.rs index 1869ad3ed70..38035e1fa6b 100644 --- a/src/libstd/process.rs +++ b/src/libstd/process.rs @@ -1167,6 +1167,24 @@ pub fn abort() -> ! { unsafe { ::sys::abort_internal() }; } +/// Returns the OS-assigned process identifier associated with this process. +/// +/// # Examples +/// +/// Basic usage: +/// +/// ```no_run +/// use std::process:current_pid; +/// +/// println!("My pid is {}", current_pid()); +/// ``` +/// +/// +#[unstable(feature = "getpid", issue = "44971", reason = "recently added")] +pub fn current_pid() -> u32 { + ::sys::os::getpid() +} + #[cfg(all(test, not(target_os = "emscripten")))] mod tests { use io::prelude::*; diff --git a/src/libstd/sys/redox/os.rs b/src/libstd/sys/redox/os.rs index efddd5f0294..c27e2ee172c 100644 --- a/src/libstd/sys/redox/os.rs +++ b/src/libstd/sys/redox/os.rs @@ -209,3 +209,7 @@ pub fn exit(code: i32) -> ! { let _ = syscall::exit(code as usize); unreachable!(); } + +pub fn getpid() -> u32 { + syscall::getpid().unwrap() as u32 +} diff --git a/src/libstd/sys/unix/os.rs b/src/libstd/sys/unix/os.rs index 5ef98d24710..132f59b999d 100644 --- a/src/libstd/sys/unix/os.rs +++ b/src/libstd/sys/unix/os.rs @@ -513,3 +513,7 @@ pub fn home_dir() -> Option<PathBuf> { pub fn exit(code: i32) -> ! { unsafe { libc::exit(code as c_int) } } + +pub fn getpid() -> u32 { + unsafe { libc::getpid() as u32 } +} diff --git a/src/libstd/sys/windows/os.rs b/src/libstd/sys/windows/os.rs index a51b458451e..b9448243559 100644 --- a/src/libstd/sys/windows/os.rs +++ b/src/libstd/sys/windows/os.rs @@ -318,6 +318,10 @@ pub fn exit(code: i32) -> ! { unsafe { c::ExitProcess(code as c::UINT) } } +pub fn getpid() -> u32 { + unsafe { c::GetCurrentProcessId() as u32 } +} + #[cfg(test)] mod tests { use io::Error; |
