diff options
| author | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-10-21 06:23:51 +0000 |
|---|---|---|
| committer | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-10-21 06:23:51 +0000 |
| commit | 6da0f913230505c90bc7625c9a4c4e7663f89f99 (patch) | |
| tree | 862be8aead069403b33194f0b8865d0b191bb0cd | |
| parent | f39ca14cc529089f6644bad008273666bd1e1a4a (diff) | |
| download | ruby-6da0f913230505c90bc7625c9a4c4e7663f89f99.tar.gz ruby-6da0f913230505c90bc7625c9a4c4e7663f89f99.tar.xz ruby-6da0f913230505c90bc7625c9a4c4e7663f89f99.zip | |
* win32/win32.c (do_spawn, do_aspawn): should return child's exit
status to parent.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@4824 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
| -rw-r--r-- | ChangeLog | 3 | ||||
| -rw-r--r-- | win32/win32.c | 10 |
2 files changed, 11 insertions, 2 deletions
@@ -3,6 +3,9 @@ Tue Oct 21 15:08:53 2003 NAKAMURA Usaku <usa@ruby-lang.org> * win32/win32.c (do_spawn, do_aspawn): should wait child process even if callded with P_OVERLAY. + * win32/win32.c (do_spawn, do_aspawn): should return child's exit + status to parent. + Tue Oct 21 00:35:02 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org> * test/soap/calc/*, test/soap/helloworld/*: catch the exception from diff --git a/win32/win32.c b/win32/win32.c index cbcecb6f8..c85b1b48e 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -735,6 +735,7 @@ int mode; char *cmd; { struct ChildRecord *child; + DWORD exitcode; switch (mode) { case P_WAIT: @@ -759,7 +760,9 @@ char *cmd; return child->pid; case P_OVERLAY: WaitForSingleObject(child->hProcess, INFINITE); - exit(0); + GetExitCodeProcess(child->hProcess, &exitcode); + CloseChildHandle(child); + _exit(exitcode); default: return -1; /* not reached */ } @@ -774,6 +777,7 @@ char **argv; char *cmd, *p, *q, *s, **t; int len, n, bs, quote; struct ChildRecord *child; + DWORD exitcode; switch (mode) { case P_WAIT: @@ -850,7 +854,9 @@ char **argv; return child->pid; case P_OVERLAY: WaitForSingleObject(child->hProcess, INFINITE); - exit(0); + GetExitCodeProcess(child->hProcess, &exitcode); + CloseChildHandle(child); + _exit(exitcode); default: return -1; /* not reached */ } |
