X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/ebb166d65eb37f89edeccfc5be97014f3f2a73e2..f6f4efcf298d5c37b5eb8a88eb164cf8b77ae928:/services/fuse/bin/arv-mount diff --git a/services/fuse/bin/arv-mount b/services/fuse/bin/arv-mount index 904fbf1b8d..b4afffab06 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 @@ -66,7 +67,20 @@ collections on the server.""") 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)) + + # wait for process to complete. + rc = sp.wait() + + # restore default signal handlers. + signal.signal(signal.SIGINT, signal.SIG_DFL) + signal.signal(signal.SIGTERM, signal.SIG_DFL) + signal.signal(signal.SIGQUIT, signal.SIG_DFL) except OSError as e: sys.stderr.write('arv-mount: %s -- exec %s\n' % (str(e), args.exec_args)) rc = e.errno