10 #include <event2/util.h>
13 #include "pathnames.h"
20 uint64_t ts
= (uint64_t) 0U;
23 ret
= evutil_gettimeofday(&tv
, NULL
);
26 ts
= (uint64_t) tv
.tv_sec
* 1000000U + (uint64_t) tv
.tv_usec
;
37 if ((z
= (long) sysconf(_SC_OPEN_MAX
)) < 0L) {
38 logger_error(NULL
, "_SC_OPEN_MAX");
41 return (unsigned int) z
;
45 closedesc_all(const int closestdin
)
49 if (closestdin
!= 0) {
51 if ((fodder
= open(_PATH_DEVNULL
, O_RDONLY
)) == -1) {
54 (void) dup2(fodder
, 0);
59 if ((fodder
= open(_PATH_DEVNULL
, O_WRONLY
)) == -1) {
62 (void) dup2(fodder
, 1);
77 if ((child
= fork()) == (pid_t
) -1) {
78 logger_error(NULL
, "Unable to fork() in order to daemonize");
80 } else if (child
!= (pid_t
) 0) {
83 if (setsid() == (pid_t
) -1) {
84 logger_error(NULL
, "Unable to setsid()");
88 if (isatty((int) i
)) {
89 (void) close((int) i
);
93 if (closedesc_all(1) != 0) {
94 logger_error(NULL
, _PATH_DEVNULL
" duplication");
103 closedesc_all(const int closestdin
)