import subprocess
import argparse
import daemon
+import signal
if __name__ == '__main__':
# Handle command line parameters
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
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()