From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from omta002.cacentral1.a.cloudfilter.net (omta002.cacentral1.a.cloudfilter.net [3.97.99.33]) by sourceware.org (Postfix) with ESMTPS id D06DE385840D for ; Thu, 13 Jan 2022 17:19:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org D06DE385840D Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=SystematicSw.ab.ca Authentication-Results: sourceware.org; spf=none smtp.mailfrom=systematicsw.ab.ca Received: from shw-obgw-4004a.ext.cloudfilter.net ([10.228.9.227]) by cmsmtp with ESMTP id 837mnn2vVyr5H83l7nXC1S; Thu, 13 Jan 2022 17:19:33 +0000 Received: from [192.168.1.105] ([68.147.0.90]) by cmsmtp with ESMTP id 83l6nW5UKviGh83l7nFdFK; Thu, 13 Jan 2022 17:19:33 +0000 X-Authority-Analysis: v=2.4 cv=IaOU5Ema c=1 sm=1 tr=0 ts=61e05f25 a=T+ovY1NZ+FAi/xYICV7Bgg==:117 a=T+ovY1NZ+FAi/xYICV7Bgg==:17 a=IkcTkHD0fZMA:10 a=uYT-Tk0qkVT609LjNaIA:9 a=QEXdDO2ut3YA:10 Message-ID: <4f1b70a7-22e0-685b-ab00-9af895ed4e51@SystematicSw.ab.ca> Date: Thu, 13 Jan 2022 10:19:32 -0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.4.1 Reply-To: cygwin@cygwin.com Subject: Re: ExitProcess does not work in Cygwin? Content-Language: en-CA To: cygwin@cygwin.com References: <1f98eb84-e3d7-bf0d-875c-3d4818e41aef@cs.umass.edu> <72e0f0601676717a2702ff13beb45b80@mail.kylheku.com> Cc: Jay K From: Brian Inglis Organization: Systematic Software In-Reply-To: <72e0f0601676717a2702ff13beb45b80@mail.kylheku.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-CMAE-Envelope: MS4xfFpe+Fiyss7BGjgvkUpaeY/CAZAVyxfat+vUftMbtZCytSgi2PGGeoQFUu42bCNZW8ypxzbkIVlMmNa3RTRe5bp0KnWU7bMZmClJfEL1HIQTo2wKHIT+ DgA7Bnr8glPKqq/D4cwVADBKzz4mU7I8GizwaZtujqNJRG+4jNJW0p1nO+vX4yvfrXI68Rmw1pcOgeWMZpZ9U5Ms0oU2C5Zf3oC79/lNqlfdZEE2r/OZgH0d X-Spam-Status: No, score=-1160.7 required=5.0 tests=BAYES_00, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, NICE_REPLY_A, RCVD_IN_BARRACUDACENTRAL, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=no autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: cygwin@cygwin.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: General Cygwin discussions and problem reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Jan 2022 17:19:35 -0000 On 2022-01-13 10:07, Kaz Kylheku (Cygwin) wrote: > 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? Just use POSIX exit(3)! >> 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 ...) Cygwin installs at-exit handlers and it is likely that when these have finished, they return a Cygwin exit status if passed by the POSIX function, perhaps unless some error has occurred during at-exit handling. -- Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada This email may be disturbing to some readers as it contains too much technical detail. Reader discretion is advised. [Data in binary units and prefixes, physical quantities in SI.]