dfork.h(3) Library Functions Manual dfork.h(3)

dfork.h - Contains an API for doing a daemonizing fork().

#include <sys/types.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_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.


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.

This variable is defined to 1 iff daemon_close_all() and daemon_close_allv() are supported.

Since

0.11

See also

daemon_close_all(), daemon_close_allv()

Definition at line 106 of file dfork.h.

This variable is defined to 1 iff daemon_reset_sigs() and daemon_reset_sigsv() are supported.

Since

0.13

See also

daemon_reset_sigs(), daemon_reset_sigsv()

Definition at line 142 of file dfork.h.

This variable is defined to 1 iff daemon_unblock_sigs() and daemon_unblock_sigsv() are supported.

Since

0.13

See also

daemon_unblock_sigs(), daemon_unblock_sigsv()

Definition at line 124 of file dfork.h.

Close all file descriptors except those passed. List needs to be terminated by -1. FDs 0, 1, 2 will be kept open anyway.

Since

0.11

See also

DAEMON_CLOSE_ALL_AVAILABLE

Examples
testd.c.

Same as daemon_close_all but takes an array of fds, terminated by -1.

Since

0.11

See also

DAEMON_CLOSE_ALL_AVAILABLE

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.

Returns

On success, the PID of the child process is returned in the parent's thread of execution, and a 0 is returned in the child's thread of execution. On failure, -1 will be returned in the parent's context, no child process will be created, and errno will be set appropriately.

Examples
testd.c.

Reset all signal handlers except those passed. List needs to be terminated by -1.

Since

0.13

See also

DAEMON_RESET_SIGS_AVAILABLE

Examples
testd.c.

Same as daemon_reset_sigs() but takes an array of signals, terminated by -1.

Since

0.13

See also

DAEMON_RESET_SIGS_AVAILABLE

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().

Examples
testd.c.

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.

Returns

zero on success, nonzero on failure.

Examples
testd.c.

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.

Parameters

s The integer to pass to daemon_retval_wait() in the parent process

Returns

Zero on success, nonzero on failure.

Examples
testd.c.

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.

Parameters

timeout Thetimeout in seconds

Returns

The integer passed daemon_retval_send() in the daemon process, or -1 on failure.

Examples
testd.c.

Unblock all signals except those passed. List needs to be terminated by -1.

Since

0.13

See also

DAEMON_UNBLOCK_SIGS_AVAILABLE

Examples
testd.c.

Same as daemon_unblock_sigs() but takes an array of signals, terminated by -1.

Since

0.13

See also

DAEMON_UNBLOCK_SIGS_AVAILABLE

Generated automatically by Doxygen for libdaemon from the source code.

Version 0.14 libdaemon