forked from qt-creator/qt-creator
ProcessInterface: Add sendControlSignal() method
It substitutes terminate, kill, interrupt and kickoffProcess methods. Task-number: QTCREATORBUG-27358 Change-Id: I9e952c2f4c1a7e76339366566f2c804a3df30347 Reviewed-by: hjk <hjk@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
@@ -347,10 +347,23 @@ public:
|
||||
}
|
||||
~QProcessImpl() final { ProcessReaper::reap(m_process); }
|
||||
|
||||
void interrupt() final { ProcessHelper::interruptProcess(m_process); }
|
||||
void terminate() final { ProcessHelper::terminateProcess(m_process); }
|
||||
void kill() final { m_process->kill(); }
|
||||
qint64 write(const QByteArray &data) final { return m_process->write(data); }
|
||||
void sendControlSignal(ControlSignal controlSignal) final {
|
||||
switch (controlSignal) {
|
||||
case ControlSignal::Terminate:
|
||||
ProcessHelper::terminateProcess(m_process);
|
||||
break;
|
||||
case ControlSignal::Kill:
|
||||
m_process->kill();
|
||||
break;
|
||||
case ControlSignal::Interrupt:
|
||||
ProcessHelper::interruptProcess(m_process);
|
||||
break;
|
||||
case ControlSignal::KickOff:
|
||||
QTC_CHECK(false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
QProcess::ProcessState state() const final { return m_process->state(); }
|
||||
|
||||
@@ -432,14 +445,24 @@ public:
|
||||
m_handle = nullptr;
|
||||
}
|
||||
|
||||
void interrupt() final
|
||||
{
|
||||
if (m_setup->m_useCtrlCStub) // bypass launcher and interrupt directly
|
||||
ProcessHelper::interruptPid(m_handle->processId());
|
||||
}
|
||||
void terminate() final { m_handle->terminate(); }
|
||||
void kill() final { m_handle->kill(); }
|
||||
qint64 write(const QByteArray &data) final { return m_handle->write(data); }
|
||||
void sendControlSignal(ControlSignal controlSignal) final {
|
||||
switch (controlSignal) {
|
||||
case ControlSignal::Terminate:
|
||||
m_handle->terminate();
|
||||
break;
|
||||
case ControlSignal::Kill:
|
||||
m_handle->kill();
|
||||
break;
|
||||
case ControlSignal::Interrupt:
|
||||
if (m_setup->m_useCtrlCStub) // bypass launcher and interrupt directly
|
||||
ProcessHelper::interruptPid(m_handle->processId());
|
||||
break;
|
||||
case ControlSignal::KickOff:
|
||||
QTC_CHECK(false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
QProcess::ProcessState state() const final { return m_handle->state(); }
|
||||
|
||||
@@ -599,11 +622,6 @@ ProcessResult QtcProcessPrivate::interpretExitCode(int exitCode)
|
||||
|
||||
} // Internal
|
||||
|
||||
void ProcessInterface::kickoffProcess()
|
||||
{
|
||||
QTC_CHECK(false);
|
||||
}
|
||||
|
||||
/*!
|
||||
\class Utils::QtcProcess
|
||||
|
||||
@@ -805,13 +823,25 @@ void QtcProcess::start()
|
||||
void QtcProcess::terminate()
|
||||
{
|
||||
if (d->m_process)
|
||||
d->m_process->terminate();
|
||||
d->m_process->sendControlSignal(ControlSignal::Terminate);
|
||||
}
|
||||
|
||||
void QtcProcess::kill()
|
||||
{
|
||||
if (d->m_process)
|
||||
d->m_process->sendControlSignal(ControlSignal::Kill);
|
||||
}
|
||||
|
||||
void QtcProcess::interrupt()
|
||||
{
|
||||
if (d->m_process)
|
||||
d->m_process->interrupt();
|
||||
d->m_process->sendControlSignal(ControlSignal::Interrupt);
|
||||
}
|
||||
|
||||
void QtcProcess::kickoffProcess()
|
||||
{
|
||||
if (d->m_process)
|
||||
d->m_process->sendControlSignal(ControlSignal::KickOff);
|
||||
}
|
||||
|
||||
bool QtcProcess::startDetached(const CommandLine &cmd, const FilePath &workingDirectory, qint64 *pid)
|
||||
@@ -1115,12 +1145,6 @@ Environment QtcProcess::systemEnvironmentForBinary(const FilePath &filePath)
|
||||
return Environment::systemEnvironment();
|
||||
}
|
||||
|
||||
void QtcProcess::kickoffProcess()
|
||||
{
|
||||
if (d->m_process)
|
||||
d->m_process->kickoffProcess();
|
||||
}
|
||||
|
||||
qint64 QtcProcess::applicationMainThreadId() const
|
||||
{
|
||||
return d->m_applicationMainThreadId;
|
||||
@@ -1181,12 +1205,6 @@ QByteArray QtcProcess::readAllStandardError()
|
||||
return buf;
|
||||
}
|
||||
|
||||
void QtcProcess::kill()
|
||||
{
|
||||
if (d->m_process)
|
||||
d->m_process->kill();
|
||||
}
|
||||
|
||||
qint64 QtcProcess::write(const QByteArray &input)
|
||||
{
|
||||
QTC_ASSERT(processMode() == ProcessMode::Writer, return -1);
|
||||
|
||||
Reference in New Issue
Block a user