mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-10-30 14:55:26 +03:00
[PATCH] introduce signal handler
Here's a patch that adds a signal handler to udev to clean up the environment (close the sysbus and close the database) on kill-signals.
This commit is contained in:
parent
8ed89229bc
commit
d12ecb53cf
23
udev.c
23
udev.c
@ -28,6 +28,7 @@
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#include <ctype.h>
|
||||
#include <signal.h>
|
||||
|
||||
#include "udev.h"
|
||||
#include "udev_version.h"
|
||||
@ -40,6 +41,22 @@
|
||||
char **main_argv;
|
||||
char **main_envp;
|
||||
|
||||
static void sig_handler(int signum)
|
||||
{
|
||||
dbg("caught signal %d", signum);
|
||||
switch (signum) {
|
||||
case SIGINT:
|
||||
case SIGTERM:
|
||||
case SIGKILL:
|
||||
sysbus_disconnect();
|
||||
udevdb_exit();
|
||||
exit(20 + signum);
|
||||
break;
|
||||
default:
|
||||
dbg("unhandled signal");
|
||||
}
|
||||
}
|
||||
|
||||
static inline char *get_action(void)
|
||||
{
|
||||
char *action;
|
||||
@ -70,7 +87,11 @@ int main(int argc, char **argv, char **envp)
|
||||
char *devpath;
|
||||
char *subsystem;
|
||||
int retval = -EINVAL;
|
||||
|
||||
|
||||
signal(SIGINT, sig_handler);
|
||||
signal(SIGTERM, sig_handler);
|
||||
signal(SIGKILL, sig_handler);
|
||||
|
||||
main_argv = argv;
|
||||
main_envp = envp;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user