/* SPDX-License-Identifier: ISC */ #include "init.h" static void handle_signal(int signo) { switch (signo) { case SIGTERM: supervisor_set_target(TGT_SHUTDOWN); break; case SIGINT: supervisor_set_target(TGT_REBOOT); break; case SIGHUP: break; case SIGUSR1: break; } } int main(void) { struct sigaction act; supervisor_init(); memset(&act, 0, sizeof(act)); act.sa_handler = handle_signal; sigaction(SIGTERM, &act, NULL); sigaction(SIGINT, &act, NULL); sigaction(SIGHUP, &act, NULL); sigaction(SIGUSR1, &act, NULL); if (reboot(LINUX_REBOOT_CMD_CAD_OFF)) perror("cannot disable CTRL+ALT+DEL"); for (;;) { supervisor_process_queues(); } return EXIT_SUCCESS; }