changeset 374:f0a61b700d23

merge
author Matt Johnston <matt@ucc.asn.au>
date Tue, 26 Jun 2012 23:49:31 +0800
parents dae8eb26eaa3 (diff) 1f530c97c053 (current diff)
children 41c3d817878d
files
diffstat 2 files changed, 32 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/server/ts.py	Tue Jun 26 23:34:36 2012 +0800
+++ b/server/ts.py	Tue Jun 26 23:49:31 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	Tue Jun 26 23:34:36 2012 +0800
+++ b/server/utils.py	Tue Jun 26 23:49:31 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)
+
+