#include <limits.h>
#include <signal.h>
#include <unistd.h>
+#include <fcntl.h>
#include <string.h>
#include <getopt.h>
#include <rpc/rpc.h>
#endif
if (!(run_mode & MODE_NODAEMON)) {
- int filedes;
+ int filedes, fdmax, tempfd;
if ((pid = fork ()) < 0) {
perror ("Could not fork");
setsid ();
chdir (DIR_BASE);
- for (filedes = 0; filedes < sysconf (_SC_OPEN_MAX); filedes++) {
+ tempfd = open("/dev/null", O_RDWR);
+ close(0); dup2(tempfd, 0);
+ close(1); dup2(tempfd, 1);
+ close(2); dup2(tempfd, 2);
+ fdmax = sysconf (_SC_OPEN_MAX);
+ for (filedes = 3; filedes < fdmax; filedes++) {
close (filedes);
}
}