+ close(0);
+ close(1);
+
+ /*
+ * Reserve fd 0 and 1 to prevent abort() and friends
+ * from sending stuff to the clients or servers.
+ */
+ fd = open("/dev/null", O_RDONLY);
+ if (fd > 0)
+ {
+ if (dup2(fd, 0) == -1)
+ {
+ log_error(LOG_LEVEL_FATAL, "Failed to reserve fd 0: %E");
+ }
+ close(fd);
+ fd = open("/dev/null", O_WRONLY);
+ if ((fd >= 0) && (fd != 1))
+ {
+ if (dup2(fd, 1) == -1)
+ {
+ log_error(LOG_LEVEL_FATAL, "Failed to reserve fd 1: %E");
+ }
+ close(fd);
+ }
+ }
+ if (fd == -1)
+ {
+ log_error(LOG_LEVEL_FATAL, "Failed to open /dev/null: %E");
+ }