On Mon, Jul 6, 2009 at 11:40 PM, Matthew Fluet <span dir="ltr">&lt;<a href="mailto:fluet@tti-c.org">fluet@tti-c.org</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Cygwin (with use-mmap false) has a similar diff:</blockquote><div> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">I was happy to ignore it, since it is clearly due to a difference in interpretation of exit codes when using GetExitCodeProcess.  One could go through the effort of searching the Cygwin source for how they translate from a GetExitCodeProcess exit code to a Posix style exit code, but I wasn&#39;t sure it was worth the effort.<br>

</blockquote></div><br>I&#39;m not even sure that&#39;s how it works on cygwin. I have vague recollections of cygwin using a pipe mechanism to convey signal information. TerminateProcess doesn&#39;t inter-operate with signal(); it&#39;s like kill -9 where you get to pick the exit status. <br>
<br>One could imagine emulating unix behaviour with CreateRemoteThread combined with DLL injection / VirtualAllocEx / WriteProcessMemory. Windows APIs are sick.<br><br>Anyway, I think the important thing is that you can now kill a spawned process under MinGW, something that was clearly missing. I&#39;m not sure my hack to convey &#39;killed by signal&#39; was a good idea, but it gets the job done where MLton is the parent process (spawning, killing, and reaping).<br>
<br>