X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/03395937ba05b9e3192e346a355c691f45cc7c85..f6f4efcf298d5c37b5eb8a88eb164cf8b77ae928:/services/fuse/bin/arv-mount diff --git a/services/fuse/bin/arv-mount b/services/fuse/bin/arv-mount index f6b2992782..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 @@ -82,7 +96,7 @@ collections on the server.""") llfuse.init(operations, args.mountpoint, opts) llfuse.main() else: + # Initialize the fuse connection + llfuse.init(operations, args.mountpoint, opts) with daemon.DaemonContext(): - # Initialize the fuse connection - llfuse.init(operations, args.mountpoint, opts) llfuse.main()