From: Peter Amstutz Date: Mon, 2 Jun 2014 18:22:00 +0000 (-0400) Subject: 2882: arv-mount --exec forwards SIGINT and SIGTERM to the underlying subprocess. X-Git-Tag: 1.1.0~2580^2~10 X-Git-Url: https://git.arvados.org/arvados.git/commitdiff_plain/2c77b59f16d698fa5368c2aa28f5c304c3f7e53b?ds=inline;hp=270a94c35d496daeabc39300611f727ce307f353 2882: arv-mount --exec forwards SIGINT and SIGTERM to the underlying subprocess. --- diff --git a/services/fuse/bin/arv-mount b/services/fuse/bin/arv-mount index 904fbf1b8d..4f1d23f021 100755 --- a/services/fuse/bin/arv-mount +++ b/services/fuse/bin/arv-mount @@ -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