pub use libc::{close, dup2, execvp, fork, getuid, isatty, pipe, read, umask, waitpid, write};
use std::os::unix::io::RawFd;
pub fn fcntl_dupfd_cloexec(fd: RawFd, min_fd: RawFd) -> i32 {
unsafe { libc::fcntl(fd, libc::F_DUPFD_CLOEXEC, min_fd) }
}
pub fn wifexited(status: i32) -> bool {
libc::WIFEXITED(status)
}
pub fn wexitstatus(status: i32) -> i32 {
libc::WEXITSTATUS(status)
}
pub fn wtermsig(status: i32) -> i32 {
libc::WTERMSIG(status)
}
pub fn exit_child(status: crate::error::ExitStatus) -> ! {
{
let mut out = std::io::stdout().lock();
let _ = std::io::Write::flush(&mut out);
}
unsafe { libc::_exit(status.code()) }
}