On Saturday 19 July 2008 06:41:04 Eric Dantie wrote: > Can someone please explain the reason on the following code (in > asterisk.c, function ast_safe_system()): > > /* Close file descriptors and launch system command */ > for (x = STDERR_FILENO + 1; x < 4096; x++) > close(x); > > > Why to close so many descriptors?
There's no way to know how many file descriptors are actually open, and every file descriptor that is open when a process is forked is duplicated in the new process. Also, if the process being forked is long running (such as an AGI), then there could be side effects to not closing all descriptors in a child process (such as receiving a SIGPIPE when the other end closes). Eventually, we could probably start registering the highest file descriptor to a central function, ensuring that we close all of them. It is admittedly a hack to pick an arbitrary number like this. -- Tilghman _______________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- AstriCon 2008 - September 22 - 25 Phoenix, Arizona Register Now: http://www.astricon.net asterisk-users mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users
