version 1.5, 2006/01/30 16:19:34
|
version 1.6, 2007/05/08 18:30:52
|
|
|
#include <fcntl.h> | #include <fcntl.h> |
#include <unistd.h> | #include <unistd.h> |
#include <Pegasus/Common/Signal.h> | #include <Pegasus/Common/Signal.h> |
|
|
#define MAX_WAIT_TIME 25 | #define MAX_WAIT_TIME 25 |
| |
PEGASUS_USING_PEGASUS; | PEGASUS_USING_PEGASUS; |
|
|
String pegasusTrace = ""; | String pegasusTrace = ""; |
| |
| |
pid_t server_pid; |
|
|
|
void sigUsr1Handler(int s_n, PEGASUS_SIGINFO_T * s_info, void * sig) | void sigUsr1Handler(int s_n, PEGASUS_SIGINFO_T * s_info, void * sig) |
{ | { |
handleSigUsr1 = true; | handleSigUsr1 = true; |
|
|
// no-ops | // no-ops |
int ServerProcess::cimserver_fork(void) { return 0; } | int ServerProcess::cimserver_fork(void) { return 0; } |
void ServerProcess::cimserver_set_process(void* p) {} | void ServerProcess::cimserver_set_process(void* p) {} |
long ServerProcess::get_server_pid(void) { return 0; } |
|
void ServerProcess::set_parent_pid(int pid) {} |
|
int ServerProcess::get_proc(int pid) { return 0; } |
|
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; } |
int ServerProcess::cimserver_wait(void) { return 1; } | int ServerProcess::cimserver_wait(void) { return 1; } |
String ServerProcess::getHome(void) { return String::EMPTY; } | String ServerProcess::getHome(void) { return String::EMPTY; } |
| |
Boolean ServerProcess::isCIMServerRunning(void) |
|
{ |
|
FILE *pid_file; |
|
pid_t pid = 0; |
|
|
|
// open the file containing the CIMServer process ID |
|
pid_file = fopen(getPIDFileName(), "r"); |
|
if (!pid_file) |
|
{ |
|
return false; |
|
} |
|
|
|
// get the pid from the file |
|
fscanf(pid_file, "%d\n", &pid); |
|
|
|
fclose(pid_file); |
|
|
|
if (pid == 0) |
|
{ |
|
return false; |
|
} |
|
|
|
// |
|
// check to see if cimserver process is alive |
|
// |
|
return false; |
|
} |
|
|
|
int ServerProcess::cimserver_kill(int id) |
|
{ |
|
FILE *pid_file; |
|
pid_t pid = 0; |
|
|
|
// open the file containing the CIMServer process ID |
|
pid_file = fopen(getPIDFileName(), "r"); |
|
if (!pid_file) |
|
{ |
|
return (-1); |
|
} |
|
|
|
// get the pid from the file |
|
fscanf(pid_file, "%d\n", &pid); |
|
|
|
fclose(pid_file); |
|
|
|
if (pid == 0) |
|
{ |
|
System::removeFile(getPIDFileName()); |
|
return (-1); |
|
} |
|
|
|
// |
|
// kill the process if it is still alive |
|
// |
|
// remove the file |
|
System::removeFile(getPIDFileName()); |
|
|
|
return(0); |
|
} |
|
// notify parent process to terminate so user knows that cimserver | // notify parent process to terminate so user knows that cimserver |
// is ready to serve CIM requests. | // is ready to serve CIM requests. |
void ServerProcess::notify_parent(int id) | void ServerProcess::notify_parent(int id) |