]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
common/fork_function: close all fds in children
authorSage Weil <sage@redhat.com>
Fri, 7 Jul 2017 12:35:56 +0000 (08:35 -0400)
committerSage Weil <sage@redhat.com>
Fri, 7 Jul 2017 15:11:24 +0000 (11:11 -0400)
Not strictly necessary, but a tidier.

Signed-off-by: Sage Weil <sage@redhat.com>
src/common/fork_function.h

index 56b8a3bbf3e53430f00428a53943e7ae346099a3..fa214f788750265c7d1ded102eeec7709564b86b 100644 (file)
@@ -46,6 +46,21 @@ static inline int fork_function(
   }
 
   // we are forker (first child)
+
+  // close all fds
+  int maxfd = sysconf(_SC_OPEN_MAX);
+  if (maxfd == -1)
+    maxfd = 16384;
+  for (int fd = 0; fd <= maxfd; fd++) {
+    if (fd == STDIN_FILENO)
+      continue;
+    if (fd == STDOUT_FILENO)
+      continue;
+    if (fd == STDERR_FILENO)
+      continue;
+    ::close(fd);
+  }
+
   sigset_t mask, oldmask;
   int pid;