diff options
author | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-05-12 06:47:24 +0000 |
---|---|---|
committer | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-05-12 06:47:24 +0000 |
commit | 0f55389d96f50ec2d4a6145bde8565dfbe28f49f (patch) | |
tree | c1b772cb4a90c762e4d5c39856b715cb6106cb93 | |
parent | fd379cd7f0e74b21ee7bd30572ddb0fb90c36a3c (diff) | |
download | ruby-0f55389d96f50ec2d4a6145bde8565dfbe28f49f.tar.gz |
* win32/win32.c (kill): add support of signal 9 on mswin32/mingw32.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1393 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | win32/win32.c | 36 |
2 files changed, 31 insertions, 9 deletions
@@ -1,3 +1,7 @@ +Sat May 12 15:43:55 2001 Usaku Nakamura <usa@osb.att.ne.jp> + + * win32/win32.c (kill): add support of signal 9 on mswin32/mingw32. + Fri May 11 15:09:52 2001 WATANABE Hirofumi <eban@ruby-lang.org> * ruby.h (rb_string_value): add volatile to avoid compiler warning. diff --git a/win32/win32.c b/win32/win32.c index 15a9a2a673..b67a094fe4 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -2559,18 +2559,36 @@ chown(const char *path, int owner, int group) int kill(int pid, int sig) { -#if 1 - if ((unsigned int)pid == GetCurrentProcessId()) - return raise(sig); + if ((unsigned int)pid == GetCurrentProcessId()) + return raise(sig); - if (sig == 2 && pid > 0) - if (GenerateConsoleCtrlEvent(CTRL_C_EVENT, (DWORD)pid)) - return 0; + if (sig == 2 && pid > 0) { + if (!GenerateConsoleCtrlEvent(CTRL_C_EVENT, (DWORD)pid)) { + errno = GetLastError(); + return -1; + } + } + else if (sig == 9 && pid > 0) { + HANDLE hProc; + hProc = OpenProcess(PROCESS_TERMINATE, FALSE, pid); + if (hProc == NULL || hProc == INVALID_HANDLE_VALUE) { + errno = GetLastError(); + return -1; + } + if (!TerminateProcess(hProc, 0)) { + errno = GetLastError(); + CloseHandle(hProc); + return -1; + } + CloseHandle(hProc); + } + else { + errno = EINVAL; return -1; -#else - return 0; -#endif + } + + return 0; } int |