[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: [libvirt] PATCH: 1/25: Implement virKill for Win32
- From: Jim Meyering <jim meyering net>
- To: "Daniel P. Berrange" <berrange redhat com>
- Cc: libvir-list redhat com
- Subject: Re: [libvirt] PATCH: 1/25: Implement virKill for Win32
- Date: Thu, 15 Jan 2009 15:07:06 +0100
"Daniel P. Berrange" <berrange redhat com> wrote:
> This patches provides a minimal implementation for virKill
> on Win32. We don't particularly need this, but it avoids a
> need to #ifdef out code elsewhere and may come in handy.
ACK, looks reasonable. (caveat: I haven't read documentation
for any of those MS-specific functions)
> util.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 45 insertions(+)
>
> Daniel
>
> diff --git a/src/util.c b/src/util.c
> --- a/src/util.c
> +++ b/src/util.c
> @@ -1379,5 +1379,50 @@ int virKillProcess(pid_t pid, int sig)
> return -1;
> }
>
> +#ifdef WIN32
> + /* Mingw / Windows don't have many signals (AFAIK) */
> + switch (sig) {
> + case SIGINT:
> + /* This does a Ctrl+C equiv */
> + if (!GenerateConsoleCtrlEvent(CTRL_C_EVENT, pid)) {
> + errno = ESRCH;
> + return -1;
> + }
> + break;
> +
> + case SIGTERM:
> + /* Since TerminateProcess is closer to SIG_KILL, we do
> + * a Ctrl+Break equiv which is more pleasant like the
> + * good old unix SIGTERM/HUP
> + */
> + if (!GenerateConsoleCtrlEvent(CTRL_BREAK_EVENT, pid)) {
> + errno = ESRCH;
> + return -1;
> + }
> + break;
> +
> + default:
> + {
> + HANDLE proc;
> + proc = OpenProcess(PROCESS_TERMINATE, FALSE, pid);
> + if (!proc) {
> + errno = ESRCH; /* Not entirely accurate, but close enough */
> + return -1;
> + }
> +
> + /*
> + * TerminateProcess is more or less equiv to SIG_KILL, in that
> + * a process can't trap / block it
> + */
> + if (!TerminateProcess(proc, sig)) {
> + errno = ESRCH;
> + return -1;
> + }
> + CloseHandle(proc);
> + }
> + }
> + return 0;
> +#else
> return kill(pid, sig);
> +#endif
> }
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]