Ctrl-Break killing subprocess even though handled in parent process

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Ctrl-Break killing subprocess even though handled in parent process

Brien Oberstein
Hi,

I have a dotnet windows console application that runs a bash script as a
subprocess using CreateProcess()  under the covers.

My windows app traps Ctrl-Break via SetConsoleCtrlHandler() and handles it
(returning true from the handler).

I execute the script via the command "bash.exe --login script.sh".

Somehow the Ctrl-Break is reaching the subprocess and causing it to be
killed, which is undesireable.

Is there a way to either prevent the Ctrl-Break from reaching the cygwin
subprocess or telling cygwin/bash to ignore it?

Thanks,
Brien


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Reply | Threaded
Open this post in threaded view
|

Re: Ctrl-Break killing subprocess even though handled in parent process

Andrey Repin
Greetings, Brien Oberstein!

> I have a dotnet windows console application that runs a bash script as a
> subprocess using CreateProcess()  under the covers.

> My windows app traps Ctrl-Break via SetConsoleCtrlHandler() and handles it
> (returning true from the handler).

> I execute the script via the command "bash.exe --login script.sh".

> Somehow the Ctrl-Break is reaching the subprocess and causing it to be
> killed, which is undesireable.

> Is there a way to either prevent the Ctrl-Break from reaching the cygwin
> subprocess or telling cygwin/bash to ignore it?

You will be laughing, but I just stumbled upon this issue myself with
TCC+bash -i. When I press ^Break in bash prompt, parent TCC dies.


--
With best regards,
Andrey Repin
Saturday, May 13, 2017 18:53:59

Sorry for my terrible english...


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Reply | Threaded
Open this post in threaded view
|

Re: Ctrl-Break killing subprocess even though handled in parent process

Brian Inglis
In reply to this post by Brien Oberstein
On 2017-05-13 03:42, Brien Oberstein wrote:
> I have a dotnet windows console application that runs a bash script
> as a subprocess using CreateProcess() under the covers.
> My windows app traps Ctrl-Break via SetConsoleCtrlHandler() and
> handles it (returning true from the handler).
> I execute the script via the command "bash.exe --login script.sh".
> Somehow the Ctrl-Break is reaching the subprocess and causing it to
> be killed, which is undesireable.
> Is there a way to either prevent the Ctrl-Break from reaching the
> cygwin subprocess or telling cygwin/bash to ignore it?

Add to top of script:
trap '' SIGINT SIGTERM
does equivalent of SIG_IGN (do nothing) on named signals.

$ info bash trap
or
$ help trap
in bash gives you more info.

Watch out for subshells, as signals are reset in subshells,
so you will need to set up the trap in all subshells.

--
Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Reply | Threaded
Open this post in threaded view
|

RE: Ctrl-Break killing subprocess even though handled in parent process

Brien Oberstein
Hi Brian,

You know, I thought I tried this already, but somehow now its working.

Thanks!

-----Original Message-----
From: Brian Inglis [mailto:[hidden email]]
Sent: Saturday, May 13, 2017 12:29 PM
To: [hidden email]
Subject: Re: Ctrl-Break killing subprocess even though handled in parent process

On 2017-05-13 03:42, Brien Oberstein wrote:
> I have a dotnet windows console application that runs a bash script
> as a subprocess using CreateProcess() under the covers.
> My windows app traps Ctrl-Break via SetConsoleCtrlHandler() and
> handles it (returning true from the handler).
> I execute the script via the command "bash.exe --login script.sh".
> Somehow the Ctrl-Break is reaching the subprocess and causing it to
> be killed, which is undesireable.
> Is there a way to either prevent the Ctrl-Break from reaching the
> cygwin subprocess or telling cygwin/bash to ignore it?

Add to top of script:
trap '' SIGINT SIGTERM
does equivalent of SIG_IGN (do nothing) on named signals.

$ info bash trap
or
$ help trap
in bash gives you more info.

Watch out for subshells, as signals are reset in subshells,
so you will need to set up the trap in all subshells.

--
Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple