[zeromq-dev] (py)zmq, fork and cloexec

Ivan Pechorin ivan.pechorin at gmail.com
Wed Jun 20 17:04:11 CEST 2012


2012/6/20 Christian Heimes <lists at cheimes.de>

> You'd have to register all file descriptors in a
> central registry, remove the FDs on close and close() the FDs after
> fork(). That's lots of work but C++ should make it easie
>
>
Sounds too complex: why not just close() all the FDs >= 3 after fork(),
before exec*() ?

Linux and all major types of UNIXes have efficient way to do so (without
iterating up to resource limit).

Like these:
 - Solaris: closefrom(3);
 - AIX: fcntl(3, F_CLOSEM, 0);
 - HP-UX:
            struct pst_status ps;
            pstat_getproc(&ps, sizeof(struct pst_status), (size_t)0,
(int)getpid());
            for (int fd = 3; fd < ps.pst_highestfd; fd++)
                close(fd);

See
http://stackoverflow.com/questions/899038/getting-the-highest-allocated-file-descriptor
for
details.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20120620/ebd9ebd2/attachment.htm>


More information about the zeromq-dev mailing list