module Signal: Signal
include Core.Signal
val handle_default : [ `Do_not_use_with_async ] -> 'a
Core.Signal
that we don't want people to use with
Async.val ignore : [ `Do_not_use_with_async ] -> 'a
val set : [ `Do_not_use_with_async ] -> 'a -> 'b
val signal : [ `Do_not_use_with_async ] -> 'a -> 'b
val handle : ?stop:unit Import.Deferred.t -> t list -> f:(t -> unit) -> unit
handle ?stop signals ~f
arranges so that whenever a signal in signals
is
delivered, f
is called on that signal. If f
raises, than an exception will be
raised to the monitor in effect when handle
was called.
Calling handle
has the side-effect of installing a C signal handler for every signal
in signals
, which will replace the existing C signal handler for that signal.
val terminating : t list
terminating
is a list of signals that can be supplied to handle
and whose default
behavior is to terminate the program: alrm hup int term usr1 usr2.
Various signals whose default_sys_behavior
is `Terminate
are not included:
| kill | it's not allowed to be handled |
| pipe | async already ignores this signal, since it handles EPIPE |
| prof | so that we can profile things with -p |
| vtalrm | it already has a handler |
val is_managed_by_async : t -> bool
is_managed_by_async signal
returns true iff signal
is being managed by async, and
hence its default behavior is no longer in effect.