Module os/signal

os/signal

High-level signal handling.

Wraps std/sys/signal with a typed Signal enum.

Example

{ on_signal, off_signal, Signal, SignalHandler } :: import "std/os/signal";

handler :: (fn(data: *(u8)) -> unit)({ println("Caught SIGINT"); });
on_signal(.Interrupt, handler);

Types

Signal enum
Signal

Portable signal identifiers.

Variants

VariantFieldsDescription
Interrupt

SIGINT — interrupt from keyboard (Ctrl-C).

Terminate

SIGTERM — termination request.

Hangup

SIGHUP — terminal hangup.

User1

SIGUSR1 — user-defined signal 1.

User2

SIGUSR2 — user-defined signal 2.

Pipe

SIGPIPE — broken pipe.

Alarm

SIGALRM — timer alarm.

Child

SIGCHLD — child process status change.

SignalHandler type-alias
SignalHandler

Functions

on_signal function
fn(sig : Signal, handler : SignalHandler, using(exn : Exception)) -> unit

Register a handler for the given signal.

Parameters

NameTypeNotes
sigSignal
handlerSignalHandler

Effects

NameTypeNotes
exnExceptioncomptime, implicit

Returns: unit

off_signal function
fn(sig : Signal, using(exn : Exception)) -> unit

Remove the handler for the given signal.

Parameters

NameTypeNotes
sigSignal

Effects

NameTypeNotes
exnExceptioncomptime, implicit

Returns: unit