| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- #include <stdio.h>
- #include <string.h>
- #include "config.h"
- /**
- * daemon_with_notify - daemonize a process, can wait for child to signal readiness
- *
- * Daemons should detach themselves thoroughly from the process which launched
- * them, and not prevent any filesystems from being unmounted. daemonize()
- * helps with the process.
- *
- * Daemon-with-notify is different in that the child can send a SIGUSR1 to
- * the parent to indicate it has started (e.g. after memory allocation and
- * other things that may fail) so that the parent can return a success or
- * failing exit code and init scripts can pick this up easily.
- *
- * Example:
- * #include <ccan/daemon_with_notify/daemon_with_notify.h>
- * #include <ccan/str/str.h>
- * #include <err.h>
- * #include <unistd.h>
- * #include <stdlib.h>
- *
- * static void usage(const char *name)
- * {
- * errx(1, "Usage: %s [--daemonize]\n", name);
- * }
- *
- * // Wait for a minute, possibly as a daemon.
- * int main(int argc, char *argv[])
- * {
- * if (argc != 1) {
- * if (argc == 2 && streq(argv[1], "--daemonize")) {
- * if (!daemonize(1, 1, 1))
- * err(1, "Failed to become daemon");
- * } else
- * usage(argv[1]);
- * }
- * sleep(10); // do some init here
- * daemon_is_ready();
- * sleep(20); // will be done in child, detached from parent
- * exit(0);
- * }
- *
- * License: BSD (3 clause)
- * Author: Stewart Smith <stewart@flamingspork.com>
- */
- int main(int argc, char *argv[])
- {
- if (argc != 2)
- return 1;
- if (strcmp(argv[1], "depends") == 0) {
- return 0;
- }
- if (strcmp(argv[1], "libs") == 0) {
- return 0;
- }
- return 1;
- }
|