}
}
+bool Application::Daemonize(void) {
+#ifndef _WIN32
+ pid_t pid;
+ pid_t sid;
+ int fd;
+
+ pid = fork();
+ if (pid == -1) {
+ return false;
+ }
+
+ if (pid) {
+ fprintf(stdout, "DONE\n");
+ exit(0);
+ }
+
+ fd = open("/dev/null", O_RDWR);
+ if (fd) {
+ if (fd != 0) {
+ dup2(fd, 0);
+ }
+
+ if (fd != 1) {
+ dup2(fd, 1);
+ }
+
+ if (fd != 2) {
+ dup2(fd, 2);
+ }
+
+ if (fd > 2) {
+ close(fd);
+ }
+ }
+
+ sid = setsid();
+ if (sid == -1) {
+ return false;
+ }
+#endif
+
+ return true;
+}
+
void Application::Shutdown(void)
{
m_ShuttingDown = true;