version 1.8.2.1, 2006/08/18 17:40:39
|
version 1.9, 2006/06/23 18:14:28
|
|
|
Boolean handleSigUsr1 = false; | Boolean handleSigUsr1 = false; |
Boolean graveError = false; | Boolean graveError = false; |
| |
pid_t server_pid; |
// the current pid is the server pid. After fork it is overwritten. |
|
pid_t server_pid = getpid(); |
Uint32 parentPid = 0; | Uint32 parentPid = 0; |
| |
void sigUsr1Handler(int s_n, PEGASUS_SIGINFO_T * s_info, void * sig) | void sigUsr1Handler(int s_n, PEGASUS_SIGINFO_T * s_info, void * sig) |
|
|
void ServerProcess::cimserver_set_process(void* p) {} | void ServerProcess::cimserver_set_process(void* p) {} |
void ServerProcess::cimserver_exitRC(int rc) {} | void ServerProcess::cimserver_exitRC(int rc) {} |
int ServerProcess::cimserver_initialize(void) { return 1; } | int ServerProcess::cimserver_initialize(void) { return 1; } |
|
|
// for all OSes supporting signals provide a cimserver_wait function |
|
// that waits to be awakened by signal PEGASUS_SIGTERM or PEGASUS_SIGHUP |
|
#ifdef PEGASUS_HAS_SIGNALS |
|
int ServerProcess::cimserver_wait(void) |
|
{ |
|
int sig = -1; |
|
sigset_t set; |
|
sigemptyset(&set); |
|
sigaddset(&set, PEGASUS_SIGTERM); |
|
sigaddset(&set, PEGASUS_SIGHUP); |
|
errno = 0; |
|
do |
|
{ |
|
#if defined(PEGASUS_OS_ZOS) || defined(PEGASUS_OS_SOLARIS) |
|
sig = sigwait(&set); |
|
#else // else for platforms = LINUX, HPUX, AIX |
|
sigwait(&set, &sig); |
|
#endif |
|
} while (errno == EINTR); |
|
return sig; |
|
} |
|
#else |
|
int ServerProcess::cimserver_wait(void) { return 1; } | int ServerProcess::cimserver_wait(void) { return 1; } |
#endif |
|
|
|
String ServerProcess::getHome(void) { return String::EMPTY; } | String ServerProcess::getHome(void) { return String::EMPTY; } |
| |
// daemon_init , RW Stevens, "Advance UNIX Programming" | // daemon_init , RW Stevens, "Advance UNIX Programming" |
|
|
} | } |
| |
setsid(); | setsid(); |
umask(S_IRWXG | S_IRWXO ); |
umask(0); |
|
|
// spawned daemon process doesn't need the old signal handlers of its parent |
|
getSigHandle()->deactivate(PEGASUS_SIGUSR1); |
|
getSigHandle()->deactivate(SIGTERM); |
|
| |
// get the pid of the cimserver process | // get the pid of the cimserver process |
server_pid = getpid(); | server_pid = getpid(); |