2882: arv-mount --exec forwards SIGINT and SIGTERM to the underlying subprocess.
authorPeter Amstutz <peter.amstutz@curoverse.com>
Mon, 2 Jun 2014 18:22:00 +0000 (14:22 -0400)
committerPeter Amstutz <peter.amstutz@curoverse.com>
Mon, 2 Jun 2014 18:22:00 +0000 (14:22 -0400)
services/fuse/bin/arv-mount

index 904fbf1b8d8958804575a0495b35616acc6f79e0..4f1d23f02180466fd64e7544096af7cbe0407672 100755 (executable)
@@ -5,6 +5,7 @@ import arvados
 import subprocess
 import argparse
 import daemon
+import signal
 
 if __name__ == '__main__':
     # Handle command line parameters
@@ -64,9 +65,14 @@ collections on the server.""")
         # wait until the driver is finished initializing
         operations.initlock.wait()
 
-        rc = 255
         try:
-            rc = subprocess.call(args.exec_args, shell=False)
+            sp = subprocess.Popen(args.exec_args, shell=False)
+            # forward signals to the process.
+            signal.signal(signal.SIGINT, lambda signum, frame: sp.send_signal(signum))
+            signal.signal(signal.SIGTERM, lambda signum, frame: sp.send_signal(signum))
+            signal.signal(signal.SIGQUIT, lambda signum, frame: sp.send_signal(signum))
+            rc = 255
+            rc = sp.wait()
         except OSError as e:
             sys.stderr.write('arv-mount: %s -- exec %s\n' % (str(e), args.exec_args))
             rc = e.errno