changeset 74:cb5ea75ee599

merge
author Matt Johnston <matt@ucc.asn.au>
date Tue, 03 Jul 2012 21:55:50 +0800
parents a1edade2b9cd (diff) 0a8639039453 (current diff)
children ca08442635ca
files
diffstat 2 files changed, 32 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/server/ts.py	Sun Jul 01 00:09:50 2012 +0800
+++ b/server/ts.py	Tue Jul 03 21:55:50 2012 +0800
@@ -25,6 +25,7 @@
 import config
 
 from utils import monotonic_time, retry, readline, crc16
+import utils
 
 lightblue = None
 try:
@@ -172,6 +173,9 @@
 def main():
     next_wake_time = 0
 
+    if '--daemon' in sys.argv:
+        utils.cheap_daemon()
+
     while True:
         sock = None
         try:
--- a/server/utils.py	Sun Jul 01 00:09:50 2012 +0800
+++ b/server/utils.py	Tue Jul 03 21:55:50 2012 +0800
@@ -97,3 +97,31 @@
             uc += 1
         i += 1
     return crc
+
+def cheap_daemon():
+    print "Daemonising."
+    sys.stdout.flush()
+    sys.stderr.flush()
+    out = file('/dev/null', 'a+')
+    os.dup2(out.fileno(), sys.stdout.fileno())
+    os.dup2(out.fileno(), sys.stderr.fileno())
+
+    try:
+        pid = os.fork()
+        if pid > 0:
+            sys.exit(0)
+    except OSError, e:
+        print>>sys.stderr, "Bad fork()"
+        sys.exit(1)
+
+    os.setsid()
+
+    try:
+        pid = os.fork()
+        if pid > 0:
+            sys.exit(0)
+    except OSError, e:
+        print>>sys.stderr, "Bad fork()"
+        sys.exit(1)
+
+