Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT sources DOT redhat DOT com Delivered-To: mailing list cygwin AT sources DOT redhat DOT com Date: Wed, 18 Apr 2001 22:43:56 +0400 From: egor duda X-Mailer: The Bat! (v1.45) Personal Reply-To: egor duda Organization: deo X-Priority: 3 (Normal) Message-ID: <31355732075.20010418224356@logos-m.ru> To: "Tim Baker" CC: cygwin AT cygwin DOT com Subject: Re: cygwin apps in pipe ignore ctrl+c In-reply-To: <002901c0c833$d32553a0$3e8a42d8@hpcustomer> References: <002101c0c82e$8206abe0$3e8a42d8 AT hpcustomer> <2352393414 DOT 20010418214818 AT logos-m DOT ru> <002901c0c833$d32553a0$3e8a42d8 AT hpcustomer> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hi! Wednesday, 18 April, 2001 Tim Baker dbaker AT direct DOT ca wrote: >> TB> I have a console app MyApp which runs in a pipe. MyApp calls >> TB> CreateProcess() to launch OtherApp and later calls >> TB> GenerateConsoleCtrlEvent() to send Ctrl+C to OtherApp. When >> TB> OtherApp is non-Cygwin it is interrupted cleanly just as though >> TB> the user had typed Ctrl+C from in the DOS window. But when >> TB> OtherApp is a Cygwin application it ignores any number of >> TB> CTRL_C_EVENTs I send and continues running. So a Cygwin >> TB> app must be calling SetConsoleCtrlHandler() to intercept the >> TB> CTRL_C_EVENT but for some reason it is not behaving properly >> TB> when the Cygwin app is *running in a pipe*. (The Cygwin app IS >> TB> attached to a Win32 console window which is required for >> TB> GenterateConsoleCtrlEvent() to work.) >> >> use kill() function to interrupt cygwin application. this is a normal >> unix way to do such things. TB> Sure, but I do not know if OtherApp is going to be a Cygwin app or not. TB> Sometimes it is not, so calling Cygwin's kill() might not be appropriate. you can do (for example) something like this: signal (SIGCHLD, process_sigchld); kill (child_pid, SIGTERM); sleep (1); if (!child_exited) use_win32_methods_to_terminate_child (); TB> In any event, this bug effects typing Ctrl+C in a console window too. TB> When I run "gcc -pipe file.c" and CPP is running, I type Ctrl+C and TB> CPP does not die. I then type Ctrl+Alt+Del to see the running tasks TB> and GCC is gone but not CPP (CPP continues running then exits). can you provide simple testcase? Egor. mailto:deo AT logos-m DOT ru ICQ 5165414 FidoNet 2:5020/496.19 -- Want to unsubscribe from this list? Check out: http://cygwin.com/ml/#unsubscribe-simple