std.signal.Signals
type pub inline Signals
A collection of signals to respond to.
The Signals
type is used to register one or more signals and then wait for
these signals to be delivered.
Static methods
new
Show source codeHide source code
fn pub static new -> Signals {
Signals(Channel.new)
}
fn pub static new -> Signals
Returns an empty collection of signals.
Examples
import std.signal (Signals)
Signals.new
Instance methods
add
Show source codeHide source code
fn pub add(signal: Signal) {
Waiter().wait(signal, recover @channel.clone)
}
fn pub add(signal: Signal)
Adds a signal that we want to receive.
Examples
import std.signal (Signal, Signals)
let signals = Signals.new
signals.add(Signal.Quit)
wait
Show source codeHide source code
fn pub wait -> Signal {
@channel.receive
}
fn pub wait -> Signal
Waits for a signal, blocking the calling process until the signal is received.
The order in which signals are returned is unspecified and may vary based on the underlying platform.
Examples
Waiting for a single signal:
import std.signal (Signal, Signals)
let signals = Signals.new
signals.add(Signal.Quit)
signals.add(Signal.Terminate)
signals.wait
Waiting for multiple signals:
import std.signal (Signal, Signals)
import std.stdio (Stdout)
let signals = Signals.new
let stdout = Stdout.new
signals.add(Signal.Quit)
signals.add(Signal.Terminate)
loop {
match signals.wait {
case Quit -> stdout.print('received SIGQUIT')
case Terminate -> stdout.print('received SIGTERM')
case _ -> {}
}
}