pub struct PidFd { /* private fields */ }
linux_pidfd
)Expand description
This type represents a file descriptor that refers to a process.
A PidFd
can be obtained by setting the corresponding option on Command
with create_pidfd
. Subsequently, the created pidfd can be retrieved
from the Child
by calling pidfd
or into_pidfd
.
Example:
#![feature(linux_pidfd)]
use std::os::linux::process::{CommandExt, ChildExt};
use std::process::Command;
let mut child = Command::new("echo")
.create_pidfd(true)
.spawn()
.expect("Failed to spawn child");
let pidfd = child
.into_pidfd()
.expect("Failed to retrieve pidfd");
// The file descriptor will be closed when `pidfd` is dropped.
Refer to the man page of pidfd_open(2)
for further details.
Implementations§
source§impl PidFd
impl PidFd
sourcepub fn kill(&self) -> Result<(), Error>
🔬This is a nightly-only experimental API. (linux_pidfd
)
pub fn kill(&self) -> Result<(), Error>
linux_pidfd
)Forces the child process to exit.
Unlike Child::kill
it is possible to attempt to kill
reaped children since PidFd does not suffer from pid recycling
races. But doing so will return an Error.
sourcepub fn wait(&self) -> Result<ExitStatus, Error>
🔬This is a nightly-only experimental API. (linux_pidfd
)
pub fn wait(&self) -> Result<ExitStatus, Error>
linux_pidfd
)Waits for the child to exit completely, returning the status that it exited with.
Unlike Child::wait
it does not ensure that the stdin handle is closed.
Additionally it will not return an ExitStatus
if the child
has already been reaped. Instead an error will be returned.
sourcepub fn try_wait(&self) -> Result<Option<ExitStatus>, Error>
🔬This is a nightly-only experimental API. (linux_pidfd
)
pub fn try_wait(&self) -> Result<Option<ExitStatus>, Error>
linux_pidfd
)Attempts to collect the exit status of the child if it has already exited.
Unlike Child::try_wait
this method will return an Error
if the child has already been reaped.