]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
util: Introduce virProcessGroupKill
authorJán Tomko <jtomko@redhat.com>
Tue, 3 Aug 2021 12:23:38 +0000 (14:23 +0200)
committerJán Tomko <jtomko@redhat.com>
Thu, 5 Aug 2021 09:18:00 +0000 (11:18 +0200)
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/libvirt_private.syms
src/util/virprocess.c
src/util/virprocess.h

index 6961cdb137a4819aa724cba0a5df41325a16e280..06e37c817f69283951934b269e95bb2a5627156a 100644 (file)
@@ -3070,6 +3070,7 @@ virProcessGetMaxMemLock;
 virProcessGetNamespaces;
 virProcessGetPids;
 virProcessGetStartTime;
+virProcessGroupKill;
 virProcessKill;
 virProcessKillPainfully;
 virProcessKillPainfullyDelay;
index 67dd599b3e60778192a2f11afc95ce6643000459..5f01dd1f67a8b23503104f429a64f25abefef3f5 100644 (file)
@@ -361,6 +361,23 @@ int virProcessKill(pid_t pid, int sig)
 }
 
 
+/* send signal to a process group */
+int virProcessGroupKill(pid_t pid, int sig G_GNUC_UNUSED)
+{
+    if (pid <= 1) {
+        errno = ESRCH;
+        return -1;
+    }
+
+#ifdef WIN32
+    errno = ENOSYS;
+    return -1;
+#else
+    return killpg(pid, sig);
+#endif
+}
+
+
 /*
  * Try to kill the process and verify it has exited
  *
index d16e8b23bb67a982cb6100e322396e1eadb1430f..0359d7fd9f3900b44a2f30bc052c4285e8aeb77a 100644 (file)
@@ -52,6 +52,7 @@ virProcessWait(pid_t pid, int *exitstatus, bool raw)
     G_GNUC_WARN_UNUSED_RESULT;
 
 int virProcessKill(pid_t pid, int sig);
+int virProcessGroupKill(pid_t pid, int sig);
 
 int virProcessKillPainfully(pid_t pid, bool force);
 int virProcessKillPainfullyDelay(pid_t pid,