|
| System.Posix.Signals | | Portability | non-portable (requires POSIX) | | Stability | provisional | | Maintainer | libraries@haskell.org |
|
|
|
|
|
| Description |
| POSIX signal support
|
|
| Synopsis |
|
|
|
|
| The Signal type
|
|
| type Signal = CInt |
|
| Specific signals
|
|
| nullSignal :: Signal |
|
| internalAbort :: Signal |
|
| sigABRT :: CInt |
|
| realTimeAlarm :: Signal |
|
| sigALRM :: CInt |
|
| busError :: Signal |
|
| sigBUS :: CInt |
|
| processStatusChanged :: Signal |
|
| sigCHLD :: CInt |
|
| continueProcess :: Signal |
|
| sigCONT :: CInt |
|
| floatingPointException :: Signal |
|
| sigFPE :: CInt |
|
| lostConnection :: Signal |
|
| sigHUP :: CInt |
|
| illegalInstruction :: Signal |
|
| sigILL :: CInt |
|
| keyboardSignal :: Signal |
|
| sigINT :: CInt |
|
| killProcess :: Signal |
|
| sigKILL :: CInt |
|
| openEndedPipe :: Signal |
|
| sigPIPE :: CInt |
|
| keyboardTermination :: Signal |
|
| sigQUIT :: CInt |
|
| segmentationViolation :: Signal |
|
| sigSEGV :: CInt |
|
| softwareStop :: Signal |
|
| sigSTOP :: CInt |
|
| softwareTermination :: Signal |
|
| sigTERM :: CInt |
|
| keyboardStop :: Signal |
|
| sigTSTP :: CInt |
|
| backgroundRead :: Signal |
|
| sigTTIN :: CInt |
|
| backgroundWrite :: Signal |
|
| sigTTOU :: CInt |
|
| userDefinedSignal1 :: Signal |
|
| sigUSR1 :: CInt |
|
| userDefinedSignal2 :: Signal |
|
| sigUSR2 :: CInt |
|
| pollableEvent :: Signal |
|
| sigPOLL :: CInt |
|
| profilingTimerExpired :: Signal |
|
| sigPROF :: CInt |
|
| badSystemCall :: Signal |
|
| sigSYS :: CInt |
|
| breakpointTrap :: Signal |
|
| sigTRAP :: CInt |
|
| urgentDataAvailable :: Signal |
|
| sigURG :: CInt |
|
| virtualTimerExpired :: Signal |
|
| sigVTALRM :: CInt |
|
| cpuTimeLimitExceeded :: Signal |
|
| sigXCPU :: CInt |
|
| fileSizeLimitExceeded :: Signal |
|
| sigXFSZ :: CInt |
|
| Sending signals
|
|
| raiseSignal :: Signal -> IO () |
| raiseSignal int calls kill to signal the current process
with interrupt signal int.
|
|
| signalProcess :: Signal -> ProcessID -> IO () |
| signalProcess int pid calls kill to signal process pid
with interrupt signal int.
|
|
| signalProcessGroup :: Signal -> ProcessGroupID -> IO () |
| signalProcessGroup int pgid calls kill to signal
all processes in group pgid with interrupt signal int.
|
|
| Handling signals
|
|
| data Handler |
| Constructors | | Default | | | Ignore | | | Catch (IO ()) | | | CatchOnce (IO ()) | |
|
|
|
| installHandler |
| :: Signal | | | -> Handler | | | -> Maybe SignalSet | other signals to block
| | -> IO Handler | old handler
| | installHandler int handler iset calls sigaction to install an
interrupt handler for signal int. If handler is Default,
SIG_DFL is installed; if handler is Ignore, SIG_IGN is
installed; if handler is Catch action, a handler is installed
which will invoke action in a new thread when (or shortly after) the
signal is received.
If iset is Just s, then the sa_mask of the sigaction structure
is set to s; otherwise it is cleared. The previously installed
signal handler for int is returned
|
|
|
| Signal sets
|
|
| data SignalSet |
|
|
| emptySignalSet :: SignalSet |
|
| fullSignalSet :: SignalSet |
|
| addSignal :: Signal -> SignalSet -> SignalSet |
|
| deleteSignal :: Signal -> SignalSet -> SignalSet |
|
| inSignalSet :: Signal -> SignalSet -> Bool |
|
| The process signal mask
|
|
| getSignalMask :: IO SignalSet |
| getSignalMask calls sigprocmask to determine the
set of interrupts which are currently being blocked.
|
|
| setSignalMask :: SignalSet -> IO () |
| setSignalMask mask calls sigprocmask with
SIG_SETMASK to block all interrupts in mask.
|
|
| blockSignals :: SignalSet -> IO () |
| blockSignals mask calls sigprocmask with
SIG_BLOCK to add all interrupts in mask to the
set of blocked interrupts.
|
|
| unblockSignals :: SignalSet -> IO () |
| unblockSignals mask calls sigprocmask with
SIG_UNBLOCK to remove all interrupts in mask from the
set of blocked interrupts.
|
|
| The alarm timer
|
|
| scheduleAlarm :: Int -> IO Int |
| scheduleAlarm i calls alarm to schedule a real time
alarm at least i seconds in the future.
|
|
| Waiting for signals
|
|
| getPendingSignals :: IO SignalSet |
| getPendingSignals calls sigpending to obtain
the set of interrupts which have been received but are currently blocked.
|
|
| awaitSignal :: Maybe SignalSet -> IO () |
| awaitSignal iset suspends execution until an interrupt is received.
If iset is Just s, awaitSignal calls sigsuspend, installing
s as the new signal mask before suspending execution; otherwise, it
calls pause. awaitSignal returns on receipt of a signal. If you
have installed any signal handlers with installHandler, it may be
wise to call yield directly after awaitSignal to ensure that the
signal handler runs as promptly as possible.
|
|
| The NOCLDSTOP flag
|
|
| setStoppedChildFlag :: Bool -> IO Bool |
| Tells the system whether or not to set the SA_NOCLDSTOP flag when
installing new signal handlers.
|
|
| queryStoppedChildFlag :: IO Bool |
| Queries the current state of the stopped child flag.
|
|
| Produced by Haddock version 0.8 |