mirror of
https://github.com/systemd/systemd.git
synced 2024-12-25 01:34:28 +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 <unistd.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
#include <signal.h>
|
||||||
|
|
||||||
#include "udev.h"
|
#include "udev.h"
|
||||||
#include "udev_version.h"
|
#include "udev_version.h"
|
||||||
@ -40,6 +41,22 @@
|
|||||||
char **main_argv;
|
char **main_argv;
|
||||||
char **main_envp;
|
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)
|
static inline char *get_action(void)
|
||||||
{
|
{
|
||||||
char *action;
|
char *action;
|
||||||
@ -70,7 +87,11 @@ int main(int argc, char **argv, char **envp)
|
|||||||
char *devpath;
|
char *devpath;
|
||||||
char *subsystem;
|
char *subsystem;
|
||||||
int retval = -EINVAL;
|
int retval = -EINVAL;
|
||||||
|
|
||||||
|
signal(SIGINT, sig_handler);
|
||||||
|
signal(SIGTERM, sig_handler);
|
||||||
|
signal(SIGKILL, sig_handler);
|
||||||
|
|
||||||
main_argv = argv;
|
main_argv = argv;
|
||||||
main_envp = envp;
|
main_envp = envp;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user