From 9e67f611fffe209ae0374177d9c0f25fd9740a13 Mon Sep 17 00:00:00 2001 From: tibo Date: Wed, 15 Jul 2020 05:55:36 +0000 Subject: [PATCH] ADD test_daemonize --- Makefile | 5 +++ Makefile.inc | 2 +- src/test_daemonize.c | 75 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 src/test_daemonize.c diff --git a/Makefile b/Makefile index e54479b..7f579eb 100644 --- a/Makefile +++ b/Makefile @@ -37,3 +37,8 @@ $(BINDIR)/block2json : $(OBJDIR)/block2json.o block2json : $(BINDIR)/block2json +$(BINDIR)/test_daemonize : $(OBJDIR)/test_daemonize.o $(OBJDIR)/daemonize.o + $(CC) -o $@ $^ $(LDFLAGS) + +test_daemonize : $(BINDIR)/test_daemonize + diff --git a/Makefile.inc b/Makefile.inc index 9ec61ab..2c2c3cb 100644 --- a/Makefile.inc +++ b/Makefile.inc @@ -1,5 +1,5 @@ CC=gcc -IFLAGS=-I /usr/local/include -I include +IFLAGS=-I ../libbtc/include -I include CFLAGS=-g LDFLAGS=-lbtc -lsecp256k1 OBJDIR=obj diff --git a/src/test_daemonize.c b/src/test_daemonize.c new file mode 100644 index 0000000..843b33e --- /dev/null +++ b/src/test_daemonize.c @@ -0,0 +1,75 @@ +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +/* + * Les outils + */ +static void signal_handler(int sig){ + switch(sig){ + case SIGUSR1: + // signal USR1 + break; + case SIGUSR2: + // Signal USR2 + break; + case SIGHUP: + // Reload conf and reinitialize processus + break; + case SIGINT: + // CTRL+C + case SIGTERM: + // Terminate : kill -15 + exit(0); + break; + } +} + +#define array_len(a) ( sizeof(a) / sizeof(a[0]) ) + +int main(int ac, char** av) +{ + /* + * Daemonize + */ + daemonize(); + + /* + * Trapper les signaux pour fermer correctement le programme + */ + int les_signaux_ign[] = { SIGCHLD, SIGTSTP, SIGTTOU, SIGTTIN }; + int les_signaux[] = { SIGHUP, SIGTERM, SIGINT }; + size_t n; + + n = array_len(les_signaux_ign); + for(int i = 0; i < n; i++) + { + if (signal(les_signaux_ign[i],SIG_IGN) == SIG_ERR) + { + printf("\ncan't catch signal %d\n", les_signaux_ign[i]); + return 1; + } + } + + n = array_len(les_signaux); + for(int i = 0; i < n; i++) + { + if (signal(les_signaux[i],signal_handler) == SIG_ERR) + { + printf("\ncan't catch signal %d\n", les_signaux[i]); + return 1; + } + } + + for(;;) { sleep(10); } + + return 0; +}