bool ZoneAdminRpcMethod::isProcessActive(const char* command) { bool result = false; OsProcessIterator ProcessIterator; OsProcess runningProcess; OsProcessInfo procInfo; OsStatus procStatus; OsStatus iter_status = ProcessIterator.findFirst( runningProcess ); while ( (iter_status == OS_SUCCESS) && (!result) ) { procStatus = runningProcess.getInfo(procInfo); if (procStatus == OS_SUCCESS) { OsSysLog::add(FAC_SUPERVISOR, PRI_DEBUG, "Process commandlines found = %s", procInfo.commandline.data()); procInfo.name.data(), procInfo.commandline.data(); if (procInfo.commandline.contains(command)) { result = true; } } iter_status = ProcessIterator.findNext(runningProcess); } return result; }
/** * Just excersizes AIP. Unclear how to create pass/fail tests */ void testIterator() { OsStatus stat; OsProcess process; OsProcessIterator pi; stat = pi.findFirst(process); CPPUNIT_ASSERT_MESSAGE("First process", stat == OS_SUCCESS); while (stat == OS_SUCCESS) { UtlString name; process.getProcessName(name); #ifdef WIN32 /*on Windows, the system process is pid 0 */ CPPUNIT_ASSERT_MESSAGE("Valid PID",process.getPID() >= 0); #else CPPUNIT_ASSERT_MESSAGE("Valid PID", process.getPID() != 0); #endif CPPUNIT_ASSERT_MESSAGE("Valid Parent PID", process.getParentPID() >= 0); CPPUNIT_ASSERT_MESSAGE("Valid process name", name.data() != NULL); stat = pi.findNext(process); } }
/** * Just excersizes AIP. Unclear how to create pass/fail tests */ void testIterator() { OsStatus stat; OsProcess process; OsProcessIterator pi; stat = pi.findFirst(process); KNOWN_BUG("Unknown failure", "XPL-12"); CPPUNIT_ASSERT_MESSAGE("First process", stat == OS_SUCCESS); while (stat == OS_SUCCESS) { UtlString name; process.getProcessName(name); #if defined(WIN32) || defined(__hpux) /*on Windows and HP-UX, the system process is pid 0 */ CPPUNIT_ASSERT_MESSAGE("Valid PID",process.getPID() >= 0); #else CPPUNIT_ASSERT_MESSAGE("Valid PID", process.getPID() != 0); #endif CPPUNIT_ASSERT_MESSAGE("Valid Parent PID", process.getParentPID() >= 0); CPPUNIT_ASSERT_MESSAGE("Valid process name", name.data() != NULL); stat = pi.findNext(process); } }
/* ============================ Os Process Test Funcs ================================= */ OsStatus TestProcessIterator() { OsProcessIterator *processIterator; cout << "Starting Process Iterator Test..." << endl; processIterator = new OsProcessIterator(); OsStatus retval = processIterator->findFirst(process); while (retval == OS_SUCCESS) { UtlString name; process.getProcessName(name); cout << "Found PID = " << process.getPID() << " ParentPID = " << process.getParentPID() << " Name = " << name.data() << endl; retval = processIterator->findNext(process); } delete processIterator; cout << "DONE Process Iterator Test.\n"; retval = OS_SUCCESS; return retval; }
/* ============================ ACCESSORS ================================= */ OsStatus OsProcessWnt::getByPID(PID pid, OsProcess &rProcess) { OsStatus retval = OS_FAILED; OsProcess process; OsProcessIterator pi; OsStatus findRetVal = pi.findFirst(process); while (findRetVal == OS_SUCCESS) { if (process.getPID() == pid) { rProcess.mParentPID = process.mParentPID; rProcess.mPID = process.mPID; rProcess.mProcessName = process.mProcessName; retval = OS_SUCCESS; break; } findRetVal = pi.findNext(process); } return retval; }