/* Daemon App Example for Solaris WindyHana's Solanara: Daemonize http://www.solanara.net/solanara/daemon cc -o daemon daemon.c */ #include #include #include #include #include #include #include #include #include void signalhandler(int sig) { switch(sig) { case SIGHUP: break; } } int main(int argc, char* argv[]) { int pid; int devttyfd; if ((pid = fork()) < 0) { perror("Cannot Fork!\n"); _exit(0); } if (pid > 0) { _exit(0); } setpgrp(); // reset process group id // redirect stdin, stdout, stderr to /dev/null. You can redirect to regular file. freopen("/dev/null", "r", stdin); freopen("/dev/null", "w", stdout); freopen("/dev/null", "w", stderr); // reset TTY if ((devttyfd = open("/dev/tty", O_WRONLY)) < 0) { ; // cannot open tty. do nothing. } else { (void) ioctl(devttyfd, TIOCNOTTY, (char *) 0); (void) close(devttyfd); } signal(SIGHUP, signalhandler); // set signal for SIGHUP while (1) { sleep(10); // start daemon. } }