blob: dff3315f463190fe42667917a42aefd1d2654265 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* Licensed under BSD 3-clause: see LICENSE */
#ifndef CCAN_DAEMON_WITH_NOTIFY_H
#define CCAN_DAEMON_WITH_NOTIFY_H
/**
* daemonize - turns this process into a daemon
*
* This routine will fork() us off to become a daemon. It will return
* -1 on error and 0 on success.
*
* It has a few optional behaviours:
* @nochdir: if nochdir is set, it won't chdir to /
* this means we could hold onto mounts
* @noclose: if noclose is set, we won't close stdout, stdin and stderr.
* @wait_sigusr1: if wait_sigusr1 is set, the parent will not exit until the
* child has either exited OR it receives a SIGUSR1 signal. You can use this
* to have the parent only exit when your process has done all the
* danegerous initialization that could cause it to fail to start
* (e.g. allocating large amounts of memory, replaying REDO logs).
* This allows init scripts starting the daemon to easily report
* success/failure.
*/
int daemonize(int nochdir, int noclose, int wait_sigusr1);
/**
* daemon_is_ready - signals parent that it can exit, we started okay
*
* After a daemonize() call, this function will send a SIGUSR1 to the parent
* telling it to exit as we have started up okay.
*/
int daemon_is_ready(void);
#endif /* CCAN_DAEMON_WITH_NOTIFY_H */
|