Signal handlers to deploy as an init.d service. Makefile install routine

This commit is contained in:
2017-09-17 18:37:33 +02:00
parent 1754052758
commit f36529fe53
2 changed files with 24 additions and 9 deletions

View File

@@ -6,6 +6,7 @@
#include <arpa/inet.h> #include <arpa/inet.h>
#include <signal.h> #include <signal.h>
#include <unistd.h>
#include "sendmysql.h" #include "sendmysql.h"
#include "calculate.h" #include "calculate.h"
@@ -25,9 +26,13 @@ void exitFunction(void) {
printf("Exiting HumidityServer.\n"); printf("Exiting HumidityServer.\n");
ulfius_stop_framework(&instance); ulfius_stop_framework(&instance);
ulfius_clean_instance(&instance); ulfius_clean_instance(&instance);
exit(0);
} }
void sig_handler(int signo) {
if (signo == SIGINT || signo == SIGTERM || signo == SIGKILL) {
exit(0); //executes the exitFunction
}
}
int callback_welcome (const struct _u_request * request, struct _u_response * response, void * user_data) { int callback_welcome (const struct _u_request * request, struct _u_response * response, void * user_data) {
ulfius_set_string_body_response(response, 200, "Welcome to the HumidityPi rest service!"); ulfius_set_string_body_response(response, 200, "Welcome to the HumidityPi rest service!");
@@ -114,6 +119,17 @@ int callback_absTempHum(const struct _u_request *request, struct _u_response *re
int main(void) { int main(void) {
atexit(exitFunction); atexit(exitFunction);
if (signal(SIGINT, sig_handler) == SIG_ERR) {
printf("\ncan't catch SIGINT\n");
}
if (signal(SIGTERM, sig_handler) == SIG_ERR) {
printf("\ncan't catch SIGTERM\n");
}
if (signal(SIGKILL, sig_handler) == SIG_ERR) {
printf("\ncan't catch SIGTERM\n");
}
// Initialize instance with the port number // Initialize instance with the port number
if (ulfius_init_instance(&instance, PORT, NULL, NULL) != U_OK) { if (ulfius_init_instance(&instance, PORT, NULL, NULL) != U_OK) {
fprintf(stderr, "Error ulfius_init_instance, abort\n"); fprintf(stderr, "Error ulfius_init_instance, abort\n");
@@ -128,8 +144,8 @@ int main(void) {
if (ulfius_start_framework(&instance) == U_OK) { if (ulfius_start_framework(&instance) == U_OK) {
printf("Start framework on port %d\n", instance.port); printf("Start framework on port %d\n", instance.port);
// Wait for the user to press <enter> on the console to quit the application // Wait for a signal to stop the program.
getchar(); pause();
} else { } else {
fprintf(stderr, "Error starting framework\n"); fprintf(stderr, "Error starting framework\n");
} }

View File

@@ -9,7 +9,7 @@ LDFLAGS = `mysql_config --libs` -lm -lulfius -lyder -lorcania
OBJ = main.o calculate.o sendmysql.o OBJ = main.o calculate.o sendmysql.o
dht22: $(OBJ) humiditypiserver: $(OBJ)
$(CC) $(CFLAGS) -o humidityserver $(OBJ) $(LDFLAGS) $(CC) $(CFLAGS) -o humidityserver $(OBJ) $(LDFLAGS)
%.o: %.c %.o: %.c
@@ -20,10 +20,9 @@ clean:
rm -r *.o rm -r *.o
install: install:
sudo cp humiditypi /usr/bin sudo cp humidityserver /usr/bin
if [ ! -d /etc/humiditypi ]; then sudo mkdir /etc/humiditypi; fi #if [ ! -d /etc/humiditypi ]; then sudo mkdir /etc/humiditypi; fi
sudo cp settings.cfg /etc/humiditypi #sudo cp settings.cfg /etc/humiditypi
uninstall: uninstall:
sudo rm /usr/bin/humiditypi sudo rm /usr/bin/humidityserver
rm -r /etc/humiditypi