unix-2.7.2.2: POSIX functionality
Copyright (c) The University of Glasgow 2002
License BSD-style (see the file libraries/base/LICENSE)
Maintainer libraries@haskell.org
Stability provisional
Portability non-portable (requires POSIX)
Safe Haskell Safe
Language Haskell2010

System.Posix.Unistd

Description

POSIX miscellaneous stuff, mostly from unistd.h

Synopsis

System environment

Sleeping

sleep :: Int -> IO Int Source #

Warning: This function has several shortcomings (see documentation). Please consider using Control.Concurrent.threadDelay instead.

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

GHC Note : threadDelay is a better choice. Since GHC uses signals for its internal clock, a call to sleep will usually be interrupted immediately. That makes sleep unusable in a program compiled with GHC, unless the RTS timer is disabled (with +RTS -V0 ). Furthermore, without the -threaded option, sleep will block all other user threads. Even with the -threaded option, sleep requires a full OS thread to itself. threadDelay has none of these shortcomings.

usleep :: Int -> IO () Source #

Sleep for the specified duration (in microseconds).

GHC Note : 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. threadDelay has neither of these shortcomings.

nanosleep :: Integer -> IO () Source #

Sleep for the specified duration (in nanoseconds)

GHC Note : the comment for usleep also applies here.

File synchronisation

fileSynchronise :: Fd -> IO () Source #

Performs fsync(2) operation on file-descriptor.

Throws IOError ("unsupported operation") if platform does not provide fsync(2) (use #if HAVE_FSYNC CPP guard to detect availability).

Since: 2.7.1.0

fileSynchroniseDataOnly :: Fd -> IO () Source #

Warning: operation will throw IOError "unsupported operation" (CPP guard: #if HAVE_FDATASYNC )

Performs fdatasync(2) operation on file-descriptor.

Throws IOError ("unsupported operation") if platform does not provide fdatasync(2) (use #if HAVE_FDATASYNC CPP guard to detect availability).

Since: 2.7.1.0