Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions Sources/UnixSignals/UnixSignal.swift
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,11 @@ import Dispatch
/// Signals are standardized messages sent to a running program to trigger specific behavior, such as quitting or error handling
public struct UnixSignal: Hashable, Sendable, CustomStringConvertible {
internal enum Wrapped {
case sigabrt
case sighup
case sigill
case sigint
case sigsegv
case sigterm
case sigusr1
case sigusr2
Expand All @@ -49,12 +52,18 @@ public struct UnixSignal: Hashable, Sendable, CustomStringConvertible {
return String(describing: self.wrapped)
}

/// Usually generated by the abort() function. Useful for cleanup prior to termination.
public static let sigabrt = Self(.sigabrt)
/// Hang up detected on controlling terminal or death of controlling process.
public static let sighup = Self(.sighup)
/// Issued if the user attempts to execute an illegal, malformed, or privileged instruction.
public static let sigill = Self(.sigill)
/// Issued if the user sends an interrupt signal.
public static let sigint = Self(.sigint)
/// Issued if the user sends a quit signal.
public static let sigquit = Self(.sigquit)
/// Issued if the user makes an invalid memory reference, such as dereferencing a null or invalid pointer.
public static let sigsegv = Self(.sigsegv)
/// Software termination signal.
public static let sigterm = Self(.sigterm)
public static let sigusr1 = Self(.sigusr1)
Expand All @@ -70,12 +79,18 @@ extension UnixSignal.Wrapped: Sendable {}
extension UnixSignal.Wrapped: CustomStringConvertible {
var description: String {
switch self {
case .sigabrt:
return "SIGABRT"
case .sighup:
return "SIGHUP"
case .sigill:
return "SIGILL"
case .sigint:
return "SIGINT"
case .sigquit:
return "SIGQUIT"
case .sigsegv:
return "SIGSEGV"
case .sigterm:
return "SIGTERM"
case .sigusr1:
Expand All @@ -93,12 +108,18 @@ extension UnixSignal.Wrapped: CustomStringConvertible {
extension UnixSignal.Wrapped {
var rawValue: Int32 {
switch self {
case .sigabrt:
return SIGABRT
case .sighup:
return SIGHUP
case .sigill:
return SIGILL
case .sigint:
return SIGINT
case .sigquit:
return SIGQUIT
case .sigsegv:
return SIGSEGV
case .sigterm:
return SIGTERM
case .sigusr1:
Expand Down