Signal handlers to deploy as an init.d service. Makefile install routine
This commit is contained in:
@@ -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");
|
||||||
}
|
}
|
||||||
|
@@ -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
|
|
||||||
|
Reference in New Issue
Block a user