Return Type | Function name | Arguments |
---|---|---|
void | Demonize | (void) |
Declared in file: hzProcess.h
Defined in file : hzProcess.cpp
Function Logic:
Function body:
void Demonize (void) { static bool bBeenHere = false ; if (bBeenHere) { std::cerr << "Attempt to call Demonize more than once" << std::endl ; return ; } bBeenHere = true ; pid_t pid ; pid_t sid ; pid = fork(); if (pid < 0) { std::cerr << "Parent [" << getpid() << "] begets crap PID [" << pid << "] - exiting" << std::endl ; exit(EXIT_FAILURE); } if (pid > 0) { std::cout << "Exiting parent [" << getpid() << "] starting [" << pid << "]" << std::endl ; exit(EXIT_SUCCESS); } umask(0); sid = setsid(); if (sid < 0) { std::cout << "Parent [" << getpid() << "] begets bad SID of [" << sid << "]" << std::endl ; exit(EXIT_FAILURE); } close(STDIN_FILENO); close(STDOUT_FILENO); close(STDERR_FILENO); }