Fix: close all file descriptors when executed as daemon
[lttng-tools.git] / src / bin / lttng-consumerd / lttng-consumerd.c
index 9f2f02feba03897b7462de3250c863ec2ec37b55..3bc700dc948594a937c2ef543a8cbe4c3d4212f7 100644 (file)
@@ -263,11 +263,26 @@ int main(int argc, char **argv)
 
        /* Daemonize */
        if (opt_daemon) {
+               int i;
+
+               /*
+                * fork
+                * child: setsid, close FD 0, 1, 2, chdir /
+                * parent: exit (if fork is successful)
+                */
                ret = daemon(0, 0);
                if (ret < 0) {
-                       perror("daemon");
+                       PERROR("daemon");
                        goto error;
                }
+               /*
+                * We are in the child. Make sure all other file
+                * descriptors are closed, in case we are called with
+                * more opened file descriptors than the standard ones.
+                */
+               for (i = 3; i < sysconf(_SC_OPEN_MAX); i++) {
+                       (void) close(i);
+               }
        }
 
        if (strlen(command_sock_path) == 0) {
This page took 0.023489 seconds and 4 git commands to generate.