> On Wednesday, August 16, 2017, 4:58:59 PM GMT+1, Jason Martin 
> <agrel...@gmail.com> wrote:

> Maybe a good vala example (someone more qualified than me) of trapping
> signals would be handy?

This is an example of handling some signals, but not an example for SIGSEGV. 
The documentation for GLib.Unix.SignalSource states "In GLib versions before 
2.36, only `SIGHUP`, `SIGINT`, `SIGTERM` can be monitored. In GLib 2.36, 
`SIGUSR1` and `SIGUSR2` were added. In GLib 2.54, `SIGWINCH` was added."
The example is in Genie, so significant leading whitespace and types are 
declared after the identifier with a colon. Save as unix_signal_example.gs and 
compile like any other Vala program:

[indent = 4]
init
    var main = new MainLoop()
    var handler = new SignalHandler( main )
    Unix.signal_add( Posix.SIGINT, handler.quit )
    print (@"To end the process use:
kill -2 $((int)Posix.getpid())
or CTRL+C")
    main.run()


class SignalHandler
    _mainloop:MainLoop

    construct( mainloop:MainLoop )
        _mainloop = mainloop

    def quit():bool
        print( @"
Process $((int)Posix.getpid()) has received SIGINT, ending..." )
        _mainloop.quit()
        return Source.REMOVE
For segmentation faults you may find inspiration from vala-stacktrace: 
https://github.com/PerfectCarl/vala-stacktrace
Thanks for keeping us updated,

Al
_______________________________________________
vala-list mailing list
vala-list@gnome.org
https://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to