From 41cefa6a2b7dbd1af33165b275bdd02d8a44332b Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Wed, 17 Aug 2022 14:40:26 +0200 Subject: [PATCH] LinuxDevice: Fix kill command on remote host Kill all the processes in the process group. For more info see: https://man7.org/linux/man-pages/man1/kill.1.html https://www.baeldung.com/linux/kill-members-process-group Fixes: QTCREATORBUG-28072 Change-Id: Id574774d16bc7d3386c6c5f80fb1d305065ec3dc Reviewed-by: Reviewed-by: Eike Ziller Reviewed-by: Christian Kandeler --- src/plugins/remotelinux/linuxdevice.cpp | 4 ++-- src/plugins/remotelinux/remotelinuxsignaloperation.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/plugins/remotelinux/linuxdevice.cpp b/src/plugins/remotelinux/linuxdevice.cpp index 0ec48a41fe9..e11d6cd7db7 100644 --- a/src/plugins/remotelinux/linuxdevice.cpp +++ b/src/plugins/remotelinux/linuxdevice.cpp @@ -512,9 +512,9 @@ void LinuxProcessInterface::sendControlSignal(ControlSignal controlSignal) QTC_ASSERT(controlSignal != ControlSignal::KickOff, return); const qint64 pid = processId(); QTC_ASSERT(pid, return); // TODO: try sending a signal based on process name - const QString args = QString::fromLatin1("-%1 %2") + const QString args = QString::fromLatin1("-%1 -%2") .arg(controlSignalToInt(controlSignal)).arg(pid); - CommandLine command = { "kill", args, CommandLine::Raw }; + const CommandLine command = { "kill", args, CommandLine::Raw }; // Note: This blocking call takes up to 2 ms for local remote. runInShell(command); } diff --git a/src/plugins/remotelinux/remotelinuxsignaloperation.cpp b/src/plugins/remotelinux/remotelinuxsignaloperation.cpp index a0dec6b269c..fbfdc7f1b40 100644 --- a/src/plugins/remotelinux/remotelinuxsignaloperation.cpp +++ b/src/plugins/remotelinux/remotelinuxsignaloperation.cpp @@ -43,7 +43,7 @@ RemoteLinuxSignalOperation::~RemoteLinuxSignalOperation() = default; static QString signalProcessGroupByPidCommandLine(qint64 pid, int signal) { - return QString::fromLatin1("kill -%1 %2").arg(signal).arg(pid); + return QString::fromLatin1("kill -%1 -%2").arg(signal).arg(pid); } void RemoteLinuxSignalOperation::run(const QString &command)