Search results

There are no results.

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 code
Hide 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 code
Hide 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 code
Hide 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 _ -> {}
  }
}