17 #include <boost/iterator/counting_iterator.hpp>
19 #include <boost/range/adaptor/filtered.hpp>
20 #include <boost/range/algorithm/for_each.hpp>
21 #include <boost/range/counting_range.hpp>
23 #ifndef BOOST_PROCESS_POSIX_MAX_FD
24 #define BOOST_PROCESS_POSIX_MAX_FD 32
30 template <
class Predicate>
37 ::fcntl(fd, F_SETFD, FD_CLOEXEC);
45 template <
class PosixExecutor>
49 boost::for_each(boost::adaptors::filter(boost::counting_range(0, upper_bound()), pred_),
61 up = ::fcntl(0, F_MAXFD);
62 }
while (up == -1 && errno == EINTR);
65 up = ::sysconf(_SC_OPEN_MAX);
76 template <
class Predicate>
77 close_fds_if_<Predicate>