ExitProcess does not work in Cygwin?

Kaz Kylheku (Cygwin) 743-406-3965@kylheku.com
Thu Jan 13 17:07:50 GMT 2022


On 2022-01-13 05:40, Eliot Moss wrote:
> On 1/13/2022 1:39 AM, Jay K wrote:
>> ExitProcess does not work in Cygwin?
> 
> ExitProcess does not appear to be a POSIX function.

This is a real issue worth looking into. Though ExitProcess isn't a 
POSIX
function, Cygwin can capture the termination status of non-Cygwin 
programs.

The concept of termination status cannot be entirely walled off in a
private Cygwin garden; it belongs to the underlying platform.

In Cygwin, I can do this:

   C:\Cygwin\cygwin64\home\kaz>exit 1
   1:BLACKBOX:~$
   1:BLACKBOX:~$ echo $?
   1
   0:BLACKBOX:~$ cmd
   Microsoft Windows [Version 10.0.19042.1052]
   (c) Microsoft Corporation. All rights reserved.

   C:\Cygwin\cygwin64\home\kaz>exit 0
   0:BLACKBOX:~$

The number in my Bash prompt is the last exit code. As you can see,
the non-Cygwin CMD.EXE program produces a termination code which
is recognized in the Cygwin world.

Most likely it does that via ExitProcess.

It is odd if calling ExitProcess in a Cygwin process causes
a Cygwin parent not to similarly process the status, as seems
to be shown by Jay's test cases.

Cygwin supports non-POSIX programming; you can write GUI applications
using Win32 calls for instance.

(Now I agree that for exiting your process, even if it's a GUI
application using numerous win32 calls, you should probably do it the
Cygwin way, and use exit, or return from main. But still ...)




More information about the Cygwin mailing list