From: Ján Tomko Date: Tue, 3 Aug 2021 12:23:38 +0000 (+0200) Subject: util: Introduce virProcessGroupKill X-Git-Tag: v7.7.0-rc1~292 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fc180c741f27fb24419a69f53ef682fade699b52;p=thirdparty%2Flibvirt.git util: Introduce virProcessGroupKill Signed-off-by: Ján Tomko Reviewed-by: Michal Privoznik --- diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 6961cdb137..06e37c817f 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -3070,6 +3070,7 @@ virProcessGetMaxMemLock; virProcessGetNamespaces; virProcessGetPids; virProcessGetStartTime; +virProcessGroupKill; virProcessKill; virProcessKillPainfully; virProcessKillPainfullyDelay; diff --git a/src/util/virprocess.c b/src/util/virprocess.c index 67dd599b3e..5f01dd1f67 100644 --- a/src/util/virprocess.c +++ b/src/util/virprocess.c @@ -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 * diff --git a/src/util/virprocess.h b/src/util/virprocess.h index d16e8b23bb..0359d7fd9f 100644 --- a/src/util/virprocess.h +++ b/src/util/virprocess.h @@ -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,