12 #include "fuse_lowlevel.h" 
   20 static struct fuse_session *fuse_instance;
 
   22 static void exit_handler(
int sig)
 
   27                         fuse_log(FUSE_LOG_ERR, 
"assertion error: signal value <= 0\n");
 
   30                 fuse_instance->error = sig;
 
   34 static void do_nothing(
int sig)
 
   39 static int set_one_signal_handler(
int sig, 
void (*handler)(
int), 
int remove)
 
   42         struct sigaction old_sa;
 
   44         memset(&sa, 0, 
sizeof(
struct sigaction));
 
   45         sa.sa_handler = remove ? SIG_DFL : handler;
 
   46         sigemptyset(&(sa.sa_mask));
 
   49         if (sigaction(sig, NULL, &old_sa) == -1) {
 
   50                 perror(
"fuse: cannot get old signal handler");
 
   54         if (old_sa.sa_handler == (remove ? handler : SIG_DFL) &&
 
   55             sigaction(sig, &sa, NULL) == -1) {
 
   56                 perror(
"fuse: cannot set signal handler");
 
   69         if (set_one_signal_handler(SIGHUP, exit_handler, 0) == -1 ||
 
   70             set_one_signal_handler(SIGINT, exit_handler, 0) == -1 ||
 
   71             set_one_signal_handler(SIGTERM, exit_handler, 0) == -1 ||
 
   72             set_one_signal_handler(SIGPIPE, do_nothing, 0) == -1)
 
   81         if (fuse_instance != se)
 
   83                         "fuse: fuse_remove_signal_handlers: unknown session\n");
 
   87         set_one_signal_handler(SIGHUP, exit_handler, 1);
 
   88         set_one_signal_handler(SIGINT, exit_handler, 1);
 
   89         set_one_signal_handler(SIGTERM, exit_handler, 1);
 
   90         set_one_signal_handler(SIGPIPE, do_nothing, 1);
 
int fuse_set_signal_handlers(struct fuse_session *se)
void fuse_remove_signal_handlers(struct fuse_session *se)
void fuse_log(enum fuse_log_level level, const char *fmt,...)
void fuse_session_exit(struct fuse_session *se)