diff --git a/src/process/wait.rs b/src/process/wait.rs index d6edab162..efd3aea55 100644 --- a/src/process/wait.rs +++ b/src/process/wait.rs @@ -310,8 +310,8 @@ pub enum WaitId<'a> { /// [Linux]: https://man7.org/linux/man-pages/man2/waitpid.2.html #[cfg(not(target_os = "wasi"))] #[inline] -pub fn waitpid(pid: Option, waitopts: WaitOptions) -> io::Result> { - Ok(backend::process::syscalls::waitpid(pid, waitopts)?.map(|(_, status)| status)) +pub fn waitpid(pid: Option, waitopts: WaitOptions) -> io::Result> { + backend::process::syscalls::waitpid(pid, waitopts) } /// `waitpid(-pgid, waitopts)`—Wait for a process in a specific process group @@ -332,8 +332,8 @@ pub fn waitpid(pid: Option, waitopts: WaitOptions) -> io::Result io::Result> { - Ok(backend::process::syscalls::waitpgid(pgid, waitopts)?.map(|(_, status)| status)) +pub fn waitpgid(pgid: Pid, waitopts: WaitOptions) -> io::Result> { + backend::process::syscalls::waitpgid(pgid, waitopts) } /// `wait(waitopts)`—Wait for any of the children of calling process to diff --git a/tests/process/wait.rs b/tests/process/wait.rs index 8c07ddab5..23c41b1bb 100644 --- a/tests/process/wait.rs +++ b/tests/process/wait.rs @@ -18,9 +18,10 @@ fn test_waitpid_none() { .expect("failed to execute child"); unsafe { kill(child.id() as _, SIGSTOP) }; - let status = process::waitpid(None, process::WaitOptions::UNTRACED) + let (pid, status) = process::waitpid(None, process::WaitOptions::UNTRACED) .expect("failed to wait") .unwrap(); + assert_eq!(pid, process::Pid::from_child(&child)); assert!(status.stopped()); } @@ -35,9 +36,10 @@ fn test_waitpid_some() { unsafe { kill(child.id() as _, SIGSTOP) }; let pid = process::Pid::from_child(&child); - let status = process::waitpid(Some(pid), process::WaitOptions::UNTRACED) + let (rpid, status) = process::waitpid(Some(pid), process::WaitOptions::UNTRACED) .expect("failed to wait") .unwrap(); + assert_eq!(rpid, pid); assert!(status.stopped()); } @@ -52,9 +54,10 @@ fn test_waitpgid() { unsafe { kill(child.id() as _, SIGSTOP) }; let pgid = process::getpgrp(); - let status = process::waitpgid(pgid, process::WaitOptions::UNTRACED) + let (pid, status) = process::waitpgid(pgid, process::WaitOptions::UNTRACED) .expect("failed to wait") .unwrap(); + assert_eq!(pid, process::Pid::from_child(&child)); assert!(status.stopped()); }