diff options
author | verigak <verigak@1ebed218-b0a3-11dd-8075-91d349ce83ee> | 2012-03-06 15:55:02 +0000 |
---|---|---|
committer | verigak <verigak@1ebed218-b0a3-11dd-8075-91d349ce83ee> | 2012-03-06 15:55:02 +0000 |
commit | 7457fb93236222c7786e5fb468a3ff1732abbaa9 (patch) | |
tree | b2dd4491dd0293a6920ffef9d1658284d3536922 /fuse.py | |
parent | a0a41a93c6b5b65903e39d6c9002142f0af8dc33 (diff) | |
download | fusepy-svn.tar.gz |
Allow fuse to handle SIGINT (Ctrl-C) gracefullysvn
Thanks to antickon for providing the solution.
Fixes #28
git-svn-id: http://fusepy.googlecode.com/svn/trunk@65 1ebed218-b0a3-11dd-8075-91d349ce83ee
Diffstat (limited to 'fuse.py')
-rw-r--r-- | fuse.py | 9 |
1 files changed, 8 insertions, 1 deletions
@@ -20,6 +20,7 @@ from errno import * from functools import partial from os import strerror from platform import machine, system +from signal import signal, SIGINT, SIG_DFL from stat import S_IFDIR from traceback import print_exc @@ -324,8 +325,14 @@ class FUSE(object): if prototype != c_voidp and getattr(operations, name, None): op = partial(self._wrapper_, getattr(self, name)) setattr(fuse_ops, name, prototype(op)) + + old_handler = signal(SIGINT, SIG_DFL) + err = _libfuse.fuse_main_real(len(args), argv, pointer(fuse_ops), - sizeof(fuse_ops), None) + sizeof(fuse_ops), None) + + signal(SIGINT, old_handler) + del self.operations # Invoke the destructor if err: raise RuntimeError(err) |