aboutsummaryrefslogtreecommitdiff
path: root/www/trac-devel/files/patch-trac_util_daemon.py
blob: ba7819c27ebcd1576f58897366967a9351526462 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
--- trac/util/daemon.py.orig	2020-12-20 02:35:50 UTC
+++ trac/util/daemon.py
@@ -68,12 +68,14 @@ def daemonize(pidfile=None, progname=None, stdin='/dev
     # The process is now daemonized, redirect standard file descriptors
     for stream in sys.stdout, sys.stderr:
         stream.flush()
-    stdin = os.open(stdin, 'rb')
-    stdout = os.open(stdout, 'ab+')
-    stderr = os.open(stderr, 'ab+', 0)
-    os.dup2(stdin.fileno(), sys.stdin.fileno())
-    os.dup2(stdout.fileno(), sys.stdout.fileno())
-    os.dup2(stderr.fileno(), sys.stderr.fileno())
+    stdin = os.open(stdin, os.O_RDONLY)
+    stdout = os.open(stdout,  os.O_RDWR | os.O_APPEND)
+    stderr = os.open(stderr, os.O_RDWR | os.O_APPEND)
+    os.dup2(stdin, sys.stdin.fileno())
+    os.dup2(stdout, sys.stdout.fileno())
+    os.dup2(stderr, sys.stderr.fileno())
+    for fd in stdin, stdout, stderr:
+        os.close(fd)
 
     if pidfile:
         # Register signal handlers to ensure atexit hooks are called on exit