unix-2.4.2.0: POSIX functionality

Portability | non-portable (requires POSIX)
Stability | provisional
Maintainer | libraries@haskell.org

System.Posix.Unistd

Contents

- System environment
- Sleeping

Description

POSIX miscellaneous stuff, mostly from unistd.h

Synopsis

- data SystemID = SystemID {
  - systemName :: String
  - nodeName :: String
  - release :: String
  - version :: String
  - machine :: String
  }
- getSystemID :: IO SystemID
- data SysVar
  - = ArgumentLimit
  - | ChildLimit
  - | ClockTick
  - | GroupLimit
  - | OpenFileLimit
  - | PosixVersion
  - | HasSavedIDs
  - | HasJobControl
- getSysVar :: SysVar -> IO Integer
- sleep :: Int -> IO Int
- usleep :: Int -> IO ()
- nanosleep :: Integer -> IO ()

# System environment

data SystemID

Constructors

SystemID |

Fields

systemName :: String
nodeName :: String
release :: String
version :: String
machine :: String

getSystemID :: IO SystemID

data SysVar

Constructors

ArgumentLimit |
ChildLimit |
ClockTick |
GroupLimit |
OpenFileLimit |
PosixVersion |
HasSavedIDs |
HasJobControl |

getSysVar :: SysVar -> IO Integer

# Sleeping

sleep :: Int -> IO Int

Sleep for the specified duration (in seconds). Returns the time remaining (if the sleep was interrupted by a signal, for example).

GHC Note: the comment for `usleep` also applies here.

usleep :: Int -> IO ()

Sleep for the specified duration (in microseconds).

GHC Note: `Control.Concurrent.threadDelay` is a better choice. Without the `-threaded` option, `usleep` will block all other user threads. Even with the `-threaded` option, `usleep` requires a full OS thread to itself. `Control.Concurrent.threadDelay` has neither of these shortcomings.

nanosleep :: Integer -> IO ()

Sleep for the specified duration (in nanoseconds)