1 #ifndef _FDLEAK_H_ 2 #define _FDLEAK_H_ 3 4 #include <stdlib.h> 5 #include <stdio.h> 6 7 #define DO(op) \ 8 ({ \ 9 long res = op; \ 10 if (res < 0) { \ 11 perror(#op); \ 12 exit(1); \ 13 }; \ 14 res; \ 15 }) 16 17 /* 18 * The macro below closes file descriptors inherited from the process 19 * that forked the current process. Close these file descriptors right 20 * after the start of main() in order to get consistent results across 21 * different releases. Known behavior: 22 * - Fedora Core 1's Perl opens /dev/pts/2 as fd 10. 23 * - For Ubuntu 8.04, see also 24 * https://bugs.launchpad.net/ubuntu/+source/seahorse/+bug/235184 25 */ 26 #define CLOSE_INHERITED_FDS { int i; for (i = 3; i < 64; i++) close(i); } 27 28 #endif /* _FDLEAK_H_ */ 29