add signal handlers

SVN revision: 60857
This commit is contained in:
Mike Blumenkrantz 2011-06-30 03:57:49 +00:00
parent 9466b75d4d
commit 87c3fdfe67
1 changed files with 40 additions and 0 deletions

View File

@ -379,6 +379,42 @@ cb_stor_chg(const char *device, Eeze_Udev_Event ev, void *data __UNUSED__, Eeze_
}
}
static void
es_exit(int sig)
{
const char *tmp;
char buf[1024];
struct stat st;
ecore_con_server_del(svr);
tmp = getenv("TMPDIR");
if (!tmp) tmp = "/tmp";
snprintf(buf, sizeof(buf), "%s/.ecore_service|eeze_scanner|0", tmp);
if (!stat(buf, &st))
unlink(buf);
exit(sig);
}
static void
sigs_setup(void *d __UNUSED__)
{
sigset_t sigs = {{0}};
struct sigaction s;
sigfillset(&sigs);
sigdelset(&sigs, SIGSEGV);
sigdelset(&sigs, SIGTERM);
sigdelset(&sigs, SIGINT);
sigdelset(&sigs, SIGQUIT);
s.sa_handler = es_exit;
s.sa_flags = 0;
sigaction(SIGTERM, &s, NULL);
sigaction(SIGSEGV, &s, NULL);
sigaction(SIGINT, &s, NULL);
}
int
main(void)
{
@ -430,7 +466,11 @@ main(void)
}
storage_setup();
/* have to override ecore's signal handlers to ensure that socket file is removed */
ecore_job_add(sigs_setup, NULL);
ecore_main_loop_begin();
ecore_con_server_del(svr);
return 0;
error:
ERR("Could not start up!");