nxt::ui::SignalPipe class

Portable async-signal-safe signal delivery via pipe. Write end is written to from signal handlers (async-signal-safe). Read end can be polled by any event loop.

Public static functions

static void notify(int signum)

Constructors, destructors, conversion operators

SignalPipe()
SignalPipe(const SignalPipe&) deleted
SignalPipe(SignalPipe&& other) noexcept
~SignalPipe()

Public functions

auto operator=(const SignalPipe&) →  SignalPipe& deleted
auto operator=(SignalPipe&& other) →  SignalPipe& noexcept
auto read_fd() const →  int noexcept
File descriptor to poll for readability.
auto try_read() →  std::optional<int>
template <typename... Signals>
void watch(Signals... signals)
Install this pipe as the handler for the given signals.

Function documentation

static void nxt::ui::SignalPipe::notify(int signum)

Called from signal handler context — async-signal-safe. Writes signal number as a single byte.

std::optional<int> nxt::ui::SignalPipe::try_read()

Read pending signals (non-blocking). Returns nullopt if no signal ready.