On Tuesday, 1 October 2013 at 14:53:24 UTC, H. S. Teoh wrote:
On Tue, Oct 01, 2013 at 02:06:12PM +0200, deadalnix wrote:
On Monday, 30 September 2013 at 22:55:22 UTC, H. S. Teoh wrote:
>On Mon, Sep 30, 2013 at 08:44:36PM +0200, deadalnix wrote:
>>On Monday, 30 September 2013 at 02:13:47 UTC, H. S. Teoh >>wrote: >>>Well, ctrl-C can be handled, so the way I'd do it is to set >>>up a
>>>signal handler for SIGINT and have it write something to a
>>>self-pipe read by the event handler, then the event handler >>>can >>>throw an Exception (which should cause dtors to run as the >>>stack
>>>unwinds).
>>>
>>
>>No you can't.
>>
>>But you somehow can, if you want to use some black magic :
>>http://www.deadalnix.me/2012/03/24/get-an-exception-from-a-segfault-on-linux-x86-and-x86_64-using-some-black-magic/
>
>We were talking about SIGINT, not SIGSEGV.
>

That isn't relevant here.

Huh? The OP was talking about cleaning up after ctrl-C, not after a segfault. I already know you can't throw exceptions from a segfault (except with heavy trickery, and yes I remember the post you linked and
I know how it works).

SIGINT is different because it can be handled, and the signal handler can just write a byte to a pipe read by the main event loop, outside of
signal handler context.


The signal handler cannot throw exception. If you want to do so, you need the same scafolding.

ctrl+c send a signal to the program. The exact same system need to be used to throw.

Obviously, you can flag something on ctrl+c so you quit you main loop, which is simpler, but not what I was answering to.

Reply via email to