Contains an API for doing a daemonizing fork(). More...
#include <sys/types.h>Go to the source code of this file.
Defines | |
| #define | DAEMON_CLOSE_ALL_AVAILABLE 1 |
| This variable is defined to 1 iff daemon_close_all() and daemon_close_allv() are supported. | |
| #define | DAEMON_UNBLOCK_SIGS_AVAILABLE 1 |
| This variable is defined to 1 iff daemon_unblock_sigs() and daemon_unblock_sigsv() are supported. | |
| #define | DAEMON_RESET_SIGS_AVAILABLE 1 |
| This variable is defined to 1 iff daemon_reset_sigs() and daemon_reset_sigsv() are supported. | |
Functions | |
| pid_t | daemon_fork (void) |
| Does a daemonizing fork(). | |
| int | daemon_retval_init (void) |
| Allocate and initialize resources required by the daemon_retval_xxx() functions. | |
| void | daemon_retval_done (void) |
| Frees the resources allocated by daemon_retval_init(). | |
| int | daemon_retval_wait (int timeout) |
| Return the value sent by the child via the daemon_retval_send() function, but wait only the specified number of seconds before timing out and returning a negative number. | |
| int | daemon_retval_send (int s) |
| Send the specified integer to the parent process. | |
| int | daemon_close_all (int except_fd,...) |
| Close all file descriptors except those passed. | |
| int | daemon_close_allv (const int except_fds[]) |
| Same as daemon_close_all but takes an array of fds, terminated by -1. | |
| int | daemon_unblock_sigs (int except,...) |
| Unblock all signals except those passed. | |
| int | daemon_unblock_sigsv (const int except[]) |
| Same as daemon_unblock_sigs() but takes an array of signals, terminated by -1. | |
| int | daemon_reset_sigs (int except,...) |
| Reset all signal handlers except those passed. | |
| int | daemon_reset_sigsv (const int except[]) |
| Same as daemon_reset_sigs() but takes an array of signals, terminated by -1. | |
Contains an API for doing a daemonizing fork().
You may daemonize by calling daemon_fork(), a function similar to the plain fork(). If you want to return a return value of the initialization procedure of the child from the parent, you may use the daemon_retval_xxx() functions.
Definition in file dfork.h.
| #define DAEMON_CLOSE_ALL_AVAILABLE 1 |
This variable is defined to 1 iff daemon_close_all() and daemon_close_allv() are supported.
| #define DAEMON_RESET_SIGS_AVAILABLE 1 |
This variable is defined to 1 iff daemon_reset_sigs() and daemon_reset_sigsv() are supported.
| #define DAEMON_UNBLOCK_SIGS_AVAILABLE 1 |
This variable is defined to 1 iff daemon_unblock_sigs() and daemon_unblock_sigsv() are supported.
| int daemon_close_all | ( | int | except_fd, | |
| ... | ||||
| ) |
Close all file descriptors except those passed.
List needs to be terminated by -1. FDs 0, 1, 2 will be kept open anyway.
| int daemon_close_allv | ( | const int | except_fds[] | ) |
Same as daemon_close_all but takes an array of fds, terminated by -1.
| pid_t daemon_fork | ( | void | ) |
Does a daemonizing fork().
For the new daemon process STDIN, STDOUT, STDERR are connected to /dev/null, the process is a session leader, the current directory is changed to /, the umask is set to 777.
| int daemon_reset_sigs | ( | int | except, | |
| ... | ||||
| ) |
Reset all signal handlers except those passed.
List needs to be terminated by -1.
| int daemon_reset_sigsv | ( | const int | except[] | ) |
Same as daemon_reset_sigs() but takes an array of signals, terminated by -1.
| void daemon_retval_done | ( | void | ) |
Frees the resources allocated by daemon_retval_init().
This should be called if neither daemon_retval_wait() nor daemon_retval_send() is called in the current process. The resources allocated by daemon_retval_init() should be freed in both parent and daemon process. This may be achieved by using daemon_retval_wait() resp. daemon_retval_send(), or by using daemon_retval_done().
| int daemon_retval_init | ( | void | ) |
Allocate and initialize resources required by the daemon_retval_xxx() functions.
These functions allow the child to send a value to the parent after completing its initialisation. Call this in the parent before forking.
| int daemon_retval_send | ( | int | s | ) |
Send the specified integer to the parent process.
Do not send -1 because this signifies a library error. Should be called just once from the daemon process only. A subsequent call to daemon_retval_done() in the daemon is ignored.
| s | The integer to pass to daemon_retval_wait() in the parent process |
| int daemon_retval_wait | ( | int | timeout | ) |
Return the value sent by the child via the daemon_retval_send() function, but wait only the specified number of seconds before timing out and returning a negative number.
Should be called just once from the parent process only. A subsequent call to daemon_retval_done() in the parent is ignored.
| timeout | Thetimeout in seconds |
| int daemon_unblock_sigs | ( | int | except, | |
| ... | ||||
| ) |
Unblock all signals except those passed.
List needs to be terminated by -1.
| int daemon_unblock_sigsv | ( | const int | except[] | ) |
Same as daemon_unblock_sigs() but takes an array of signals, terminated by -1.
1.6.1