(keep: KeepFds<'_>)
| 507 | } |
| 508 | |
| 509 | fn close_fds_brute_force(keep: KeepFds<'_>) { |
| 510 | let max_fd = nix::unistd::sysconf(nix::unistd::SysconfVar::OPEN_MAX) |
| 511 | .ok() |
| 512 | .flatten() |
| 513 | .unwrap_or(256) as i32; |
| 514 | let fds = itertools::chain![ |
| 515 | Some(keep.above), |
| 516 | keep.keep.iter().map(BorrowedFd::as_raw_fd), |
| 517 | Some(max_fd) |
| 518 | ]; |
| 519 | for fd in fds.tuple_windows().flat_map(|(start, end)| start + 1..end) { |
| 520 | unsafe { libc::close(fd) }; |
| 521 | } |
| 522 | } |
| 523 | |
| 524 | #[derive(Default)] |
| 525 | struct IntParser { |