chiark / gitweb /
hippotatd: --pidfile improvement
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 9 Apr 2017 12:01:17 +0000 (13:01 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 9 Apr 2017 12:01:17 +0000 (13:01 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
hippotatd

index a235929d8c1c2b1b4e0c7d100a2b3f05acfe480b..248ea44c418695701963cfdb098fac634795b17d 100755 (executable)
--- a/hippotatd
+++ b/hippotatd
@@ -378,6 +378,8 @@ def daemonise():
     daemonic_reactor = (twisted.internet.interfaces.IReactorDaemonize
                         .providedBy(reactor))
     if daemonic_reactor: reactor.beforeDaemonize()
     daemonic_reactor = (twisted.internet.interfaces.IReactorDaemonize
                         .providedBy(reactor))
     if daemonic_reactor: reactor.beforeDaemonize()
+    if opts.pidfile is not None:
+      pidfile_h = open(opts.pidfile, 'w')
     rfd, wfd = os.pipe()
     childpid = os.fork()
     if childpid:
     rfd, wfd = os.pipe()
     childpid = os.fork()
     if childpid:
@@ -395,14 +397,14 @@ def daemonise():
     grandchildpid = os.fork()
     if grandchildpid:
       # we are the intermediate child
     grandchildpid = os.fork()
     if grandchildpid:
       # we are the intermediate child
+      if opts.pidfile is not None:
+        print(grandchildpid, file=pfh)
+        pfh.close()
       os._exit(0)
 
     mypid = os.getpid()
       os._exit(0)
 
     mypid = os.getpid()
-    if opts.pidfile is not None:
-      pfh = open(opts.pidfile, 'w')
-      print(mypid, file=pfh)
-      pfh.close()
-
+    pfh.close()
+                                                                        
     logger = subprocess.Popen(['logger','-d',
                                '-t','hippotat(stderr)',
                                '--id=%d' % mypid,
     logger = subprocess.Popen(['logger','-d',
                                '-t','hippotat(stderr)',
                                '--id=%d' % mypid,