Blob: support/mouse-c2-daemon.c
Raw · Blame
#include <fcntl.h>
#include <signal.h>
#include <unistd.h>
static const char ready_path[] = "/run/mouse-c2-daemon.ready";
static const char term_path[] = "/run/mouse-c2-daemon.term";
static void write_marker(const char *path, const char *contents, size_t length)
{
int descriptor = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644);
if (descriptor == -1)
return;
(void)write(descriptor, contents, length);
(void)close(descriptor);
}
static void handle_term(int signal_number)
{
static const char marker[] = "SIGTERM\n";
(void)signal_number;
write_marker(term_path, marker, sizeof(marker) - 1);
}
int main(void)
{
static const char marker[] = "ready\n";
struct sigaction action = {
.sa_handler = handle_term,
};
if (sigemptyset(&action.sa_mask) == -1)
return 1;
if (sigaction(SIGTERM, &action, NULL) == -1)
return 1;
write_marker(ready_path, marker, sizeof(marker) - 1);
for (;;)
pause();
}