History

make sure AC PID is valid before acting on process

Stephen Birarda committed 11 years ago

Commit d10095e1 parent c4c6e721 file · +16 −10Browse files

Showing the changes to assignment-client/src/AssignmentClientMonitor.cpp (1 of 1 file). Show all

Unified · Split

assignment-client/src/AssignmentClientMonitor.cpp+16−10
@@ -95,8 +95,10 @@ void AssignmentClientMonitor::stopChildProcesses() { · 94 unmodified lines
95 95
96 // ask child processes to terminate96 // ask child processes to terminate
97 foreach(QProcess* childProcess, _childProcesses) {97 foreach(QProcess* childProcess, _childProcesses) {
98 qDebug() << "Attempting to terminate child process" << childProcess->processId();98 if (childProcess->processId() > 0) {
99 childProcess->terminate();99 qDebug() << "Attempting to terminate child process" << childProcess->processId();
100 childProcess->terminate();
101 }
100 }102 }
101 103
102 simultaneousWaitOnChildren(WAIT_FOR_CHILD_MSECS);104 simultaneousWaitOnChildren(WAIT_FOR_CHILD_MSECS);
@@ -104,8 +106,10 @@ void AssignmentClientMonitor::stopChildProcesses() { · 1 unmodified line
104 if (_childProcesses.size() > 0) {106 if (_childProcesses.size() > 0) {
105 // ask even more firmly107 // ask even more firmly
106 foreach(QProcess* childProcess, _childProcesses) {108 foreach(QProcess* childProcess, _childProcesses) {
107 qDebug() << "Attempting to kill child process" << childProcess->processId();109 if (childProcess->processId() > 0) {
108 childProcess->kill();110 qDebug() << "Attempting to kill child process" << childProcess->processId();
111 childProcess->kill();
112 }
109 }113 }
110 114
111 simultaneousWaitOnChildren(WAIT_FOR_CHILD_MSECS);115 simultaneousWaitOnChildren(WAIT_FOR_CHILD_MSECS);
@@ -155,12 +159,14 @@ void AssignmentClientMonitor::spawnChildClient() { · 43 unmodified lines
155 assignmentClient->setProcessChannelMode(QProcess::ForwardedChannels);159 assignmentClient->setProcessChannelMode(QProcess::ForwardedChannels);
156 160
157 assignmentClient->start(QCoreApplication::applicationFilePath(), _childArguments);161 assignmentClient->start(QCoreApplication::applicationFilePath(), _childArguments);
158 162
159 // make sure we hear that this process has finished when it does163 if (assignmentClient->processId() > 0) {
160 connect(assignmentClient, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(childProcessFinished()));164 // make sure we hear that this process has finished when it does
161 165 connect(assignmentClient, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(childProcessFinished()));
162 qDebug() << "Spawned a child client with PID" << assignmentClient->pid();166
163 _childProcesses.insert(assignmentClient->processId(), assignmentClient);167 qDebug() << "Spawned a child client with PID" << assignmentClient->processId();
168 _childProcesses.insert(assignmentClient->processId(), assignmentClient);
169 }
164}170}
165 171
166void AssignmentClientMonitor::checkSpares() {172void AssignmentClientMonitor::checkSpares() {