|
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 |