/* testing daemon * * config-edit Copyright (C) 2008-2015 by Bruce Korb - all rights reserved * * config-edit is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * config-edit is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see <http://www.gnu.org/licenses/>. */ #include <unistd.h> #include <signal.h> #include <stdio.h> #include "daemon-opts.h" int reset = 0; static void handle_sighup(int sig) { static char const * fake_av[2] = { "daemon", NULL }; optionRestore(&daemonOptions); /* * We use a fake arg vector because we've already saved the initial * options into our config file. Someone has changed that config file, * so we do not want to reprocess command line options. */ (void)optionProcess(&daemonOptions, 1, (char **)fake_av); reset = 1; } int main(int argc, char ** argv) { optionSaveState(&daemonOptions); (void)optionProcess(&daemonOptions, argc, argv); /* * Save the resulting state. The command line options are augment * the current config and are saved for future reference. */ if (argc > 1) optionSaveFile(&daemonOptions); (void)signal(SIGHUP, handle_sighup); { FILE * fp = fopen("daemon.pid", "w"); if (fp != NULL) { fprintf(fp, "%d\n", getpid()); fclose(fp); } } for (;;) { printf("text: %-70s\r", OPT_ARG(TEXT)); fflush(stdout); sleep(10); if (reset) { fputc('\n', stdout); reset = 0; } } }