Merge remote-tracking branch 'origin/9.0'

Change-Id: I2123e09f75199a63af6e8505fb8889e7f9d025d2
This commit is contained in:
Eike Ziller
2022-11-16 09:40:34 +01:00
22 changed files with 195 additions and 124 deletions

View File

@@ -481,7 +481,17 @@ qint64 SshProcessInterface::processId() const
bool SshProcessInterface::runInShell(const CommandLine &command, const QByteArray &data)
{
return d->m_devicePrivate->runInShell(command, data).exitCode == 0;
QtcProcess process;
CommandLine cmd = {d->m_device->filePath("/bin/sh"), {"-c"}};
QString tmp;
ProcessArgs::addArg(&tmp, command.executable().path());
ProcessArgs::addArgs(&tmp, command.arguments());
cmd.addArg(tmp);
process.setCommand(cmd);
process.setWriteData(data);
process.start();
QTC_CHECK(process.waitForFinished()); // otherwise we may start producing killers for killers
return process.exitCode() == 0;
}
void SshProcessInterface::start()
@@ -494,6 +504,20 @@ qint64 SshProcessInterface::write(const QByteArray &data)
return d->m_process.writeRaw(data);
}
void SshProcessInterface::sendControlSignal(Utils::ControlSignal controlSignal)
{
if (d->m_process.usesTerminal()) {
switch (controlSignal) {
case Utils::ControlSignal::Terminate: d->m_process.terminate(); break;
case Utils::ControlSignal::Kill: d->m_process.kill(); break;
case Utils::ControlSignal::Interrupt: d->m_process.interrupt(); break;
case Utils::ControlSignal::KickOff: d->m_process.kickoffProcess(); break;
}
return;
}
handleSendControlSignal(controlSignal);
}
LinuxProcessInterface::LinuxProcessInterface(const LinuxDevice *linuxDevice)
: SshProcessInterface(linuxDevice)
{
@@ -504,7 +528,7 @@ LinuxProcessInterface::~LinuxProcessInterface()
killIfRunning();
}
void LinuxProcessInterface::sendControlSignal(ControlSignal controlSignal)
void LinuxProcessInterface::handleSendControlSignal(ControlSignal controlSignal)
{
QTC_ASSERT(controlSignal != ControlSignal::KickOff, return);
const qint64 pid = processId();