avserver: use freopen to redirect stdin/out/err to /dev/null
authorJanne Grunau <janne-libav@jannau.net>
Thu, 25 Oct 2012 12:54:48 +0000 (14:54 +0200)
committerJanne Grunau <janne-libav@jannau.net>
Thu, 15 Nov 2012 16:36:38 +0000 (17:36 +0100)
avserver.c

index 649cbed..9f6b9d9 100644 (file)
@@ -25,6 +25,7 @@
 #endif
 #include <string.h>
 #include <stdlib.h>
+#include <stdio.h>
 #include "libavformat/avformat.h"
 // FIXME those are internal headers, avserver _really_ shouldn't use them
 #include "libavformat/ffm.h"
@@ -513,13 +514,12 @@ static void start_children(FFStream *feed)
                     close(i);
 
                 if (!avserver_debug) {
-                    i = open("/dev/null", O_RDWR);
-                    if (i != -1) {
-                        dup2(i, 0);
-                        dup2(i, 1);
-                        dup2(i, 2);
-                        close(i);
-                    }
+                    if (!freopen("/dev/null", "r", stdin))
+                        http_log("failed to redirect STDIN to /dev/null\n;");
+                    if (!freopen("/dev/null", "w", stdout))
+                        http_log("failed to redirect STDOUT to /dev/null\n;");
+                    if (!freopen("/dev/null", "w", stderr))
+                        http_log("failed to redirect STDERR to /dev/null\n;");
                 }
 
                 signal(SIGPIPE, SIG_DFL);