Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Message-ID: <05cb01c18a07$85d72c40$c51811ac@brokat.de> From: "Michael Rumpf" To: References: <00f201c18922$2783b180$c51811ac AT brokat DOT de> <003c01c18936$55ca5fd0$c51811ac AT brokat DOT de> Subject: Re: bash/cmd CTRL-C problem... Date: Fri, 21 Dec 2001 11:09:05 +0100 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2600.0000 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 Am I the only one having problems with this, or is this simply the wrong list to ask a question about the Cygwin bash... ?? Michael ----- Original Message ----- From: "Michael Rumpf" To: Sent: Thursday, December 20, 2001 10:11 AM Subject: Re: bash/cmd CTRL-C problem... > Hi, > > sorry for following up myself, but I found out that Cygwin equally handles > CTRL-BREAK and CTRL-C by sending a SIGINT to the process. > See http://groups.yahoo.com/group/gnu-win32/message/27643 (last sentence). > This seems to be the source of the problem. > CTRL-BREAK under the cmd shell terminates the process after handling the > signal without further executing any code. The bad thing is that under bash > the same behaviour follows from pressing CTRL-BREAK _and_ CTRL-C !! > > If this is a design issue, can someone please explain what the reasons > are... > > We have an application that forks other processes. The main thread is > waiting for the signal handler to return in order to cleanly stop the child > processes. By just stopping the parent process the child processes keep > running and I have to kill them manually each time I press CTRL-C. The same > application is working fine under windows cmd shell and bash under Linux , > HP-UX 10/11, AIX4.x, and SunOS 2.5+... > > Please help, I don't want to use the stupid windows cmd shell.... ;-) > > Michael > > ----- Original Message ----- > From: "Michael Rumpf" > To: > Sent: Thursday, December 20, 2001 7:47 AM > Subject: bash/cmd CTRL-C problem... > > > > Hi, > > > > I'm new to the list and I don't know if this problem is already solved, > but > > I couldn't find a hint neither on the archives nor on the FAQ or somewhere > > else on the net. > > > > My problem is related to bash/cmd and signal handling. > > In my app I installed a signal handler for SIGINT. The app is going into a > > wait loop and waiting for the exit flag from the signal handler to be set. > > > > When pressing CTRL-C in the windows cmd shell the application continues > > normally after the signal handler has been caught. Under bash the signal > > handler is also correctly called, but after that the app is exiting > > immediatly, i.e. not continuing with the code. > > Here is the source: > > > > > //////////////////////////////////////////////////////////////////////////// > > ///////////////// > > #include > > #include > > #include > > > > bool loop = true; > > > > extern "C" void signalHandler(int sig) > > { > > switch( sig ) > > { > > case SIGINT: // == 2 > > printf("SIGINT=%d\n",sig); > > break; > > default: > > printf("default=%d\n",sig); > > break; > > }; > > loop=false; > > } > > > > int main(int argc, char* argv[]) > > { > > if (signal( SIGINT , signalHandler ) == SIG_ERR) > > return -1; > > printf("### ctrlbreak: Waiting now...\n"); > > while(loop) > > Sleep ((DWORD) 1000) ; > > printf("### ctrlbreak: Finished waiting now...\n"); > > return 0; > > } > > > //////////////////////////////////////////////////////////////////////////// > > ///////////////// > > > > Here the the output of the app under Win2K/bash: > > // bash 2.05a-2 > > $ ./ctrlbreak.exe > > ### ctrlbreak: Waiting now... > > SIGINT=2 > > > > > > // GNU bash, version 2.02.1(2)-release (i586-pc-cygwin32) B20.1 > > bash-2.02$ ./ctrlbreak > > ### ctrlbreak: Waiting now... > > SIGINT=2 > > > > // cmd.exe Win2k SP2 > > ### ctrlbreak: Waiting now... > > SIGINT=2 > > ### ctrlbreak: Finished waiting now... > > > > > > You can see that under the cmd shell the text "Finished waiting now..." is > > printed which does not come out under the bash. The app is not linked > > against any cygwin library. It is a plain VC++ console application. But > when > > I compile with gcc from the cygwin package I have the same result. > > Any hint would be greatly appreciated... > > > > Michael > > > > PS: I just downloaded the latest stable version 1.3.6 today... > > > > > > > > -- > > Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple > > Bug reporting: http://cygwin.com/bugs.html > > Documentation: http://cygwin.com/docs.html > > FAQ: http://cygwin.com/faq/ > > > > > > > -- > Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple > Bug reporting: http://cygwin.com/bugs.html > Documentation: http://cygwin.com/docs.html > FAQ: http://cygwin.com/faq/ > -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/