darcs-2.16.1: a distributed, interactive, smart revision control system

Copyright2008 David Roundy <droundy@darcs.net>
Safe HaskellNone





getCurrentDirectory :: IO FilePath #

Obtain the current working directory as an absolute path.

In a multithreaded program, the current working directory is a global state shared among all threads of the process. Therefore, when performing filesystem operations from multiple threads, it is highly recommended to use absolute rather than relative paths (see: makeAbsolute).

The operation may fail with:

  • HardwareFault A physical I/O error has occurred. [EIO]
  • isDoesNotExistError or NoSuchThing There is no path referring to the working directory. [EPERM, ENOENT, ESTALE...]
  • isPermissionError or PermissionDenied The process has insufficient privileges to perform the operation. [EACCES]
  • ResourceExhausted Insufficient resources are available to perform the operation.
  • UnsupportedOperation The operating system has no notion of current working directory.

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

raiseSignal :: Signal -> IO () #

raiseSignal int calls kill to signal the current process with interrupt signal int.

data Handler #

The actions to perform when a signal is received.


Catch (IO ()) 
CatchOnce (IO ()) 
CatchInfo (SignalInfo -> IO ())

Since: unix-

CatchInfoOnce (SignalInfo -> IO ())

Since: unix-

type Signal = CInt #