Function glib::source::unix_signal_source_new [−][src]
pub fn unix_signal_source_new<F>(
signum: i32,
name: Option<&str>,
priority: Priority,
func: F
) -> Source where
F: FnMut() -> Continue + Send + 'static,
Expand description
Adds a closure to be called by the main loop the returned Source
is attached to whenever a
UNIX signal is raised.
func
will be called repeatedly every time signum
is raised until it
returns Continue(false)
.
Create a Source
that will be dispatched upon delivery of the UNIX
signal signum
. 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.
Note that unlike the UNIX default, all sources which have created a
watch will be dispatched, regardless of which underlying thread
invoked g_unix_signal_source_new()
.
For example, an effective use of this function is to handle SIGTERM
cleanly; flushing any outstanding files, and then calling
g_main_loop_quit (). It is not safe to do any of this a regular
UNIX signal handler; your handler may be invoked while malloc()
or
another library function is running, causing reentrancy if you
attempt to use it from the handler. None of the GLib/GObject API
is safe against this kind of reentrancy.
The interaction of this source when combined with native UNIX
functions like sigprocmask()
is not defined.
The source will not initially be associated with any MainContext
and must be added to one with g_source_attach()
before it will be
executed.
signum
A signal number
Returns
A newly created Source