W3cubDocs

/Haskell 9

System.Posix.IO.ByteString

Copyright (c) The University of Glasgow 2002
License BSD-style (see the file libraries/base/LICENSE)
Maintainer [email protected]
Stability provisional
Portability non-portable (requires POSIX)
Safe Haskell Trustworthy
Language Haskell2010

Description

POSIX IO support. These types and functions correspond to the unix functions open(2), close(2), etc. For more portable functions which are more like fopen(3) and friends from stdio.h, see System.IO.

Input / Output

Standard file descriptors

stdInput :: Fd Source

stdOutput :: Fd Source

stdError :: Fd Source

Opening and closing files

data OpenMode Source

Instances
Instances details
Read OpenMode Source
Instance details

Defined in System.Posix.IO.Common

Show OpenMode Source
Instance details

Defined in System.Posix.IO.Common

Eq OpenMode Source
Instance details

Defined in System.Posix.IO.Common

Methods

(==) :: OpenMode -> OpenMode -> Bool

(/=) :: OpenMode -> OpenMode -> Bool

Ord OpenMode Source
Instance details

Defined in System.Posix.IO.Common

data OpenFileFlags Source

Correspond to some of the int flags from C's fcntl.h.

Constructors

OpenFileFlags

Fields

defaultFileFlags :: OpenFileFlags Source

Default values for the OpenFileFlags type.

Each field of OpenFileFlags is either False or Nothing respectively.

openFd :: RawFilePath -> OpenMode -> OpenFileFlags -> IO Fd Source

Open and optionally create this file. See Files for information on how to use the FileMode type.

openFdAt Source

Arguments

:: Maybe Fd

Optional directory file descriptor

-> RawFilePath

Pathname to open

-> OpenMode

Read-only, read-write or write-only

-> OpenFileFlags

Append, exclusive, truncate, etc.

-> IO Fd

Open a file relative to an optional directory file descriptor.

Directory file descriptors can be used to avoid some race conditions when navigating changing directory trees, or to retain access to a portion of the directory tree that would otherwise become inaccessible after dropping privileges.

createFile :: RawFilePath -> FileMode -> IO Fd Source

Create and open this file in WriteOnly mode. A special case of openFd. See Files for information on how to use the FileMode type.

createFileAt Source

Arguments

:: Maybe Fd

Optional directory file descriptor

-> RawFilePath

Pathname to create

-> FileMode

File permission bits (before umask)

-> IO Fd

Create and open a file for write-only, with default flags, relative an optional directory file-descriptor.

Directory file descriptors can be used to avoid some race conditions when navigating changing directory trees, or to retain access to a portion of the directory tree that would otherwise become inaccessible after dropping privileges.

closeFd :: Fd -> IO () Source

Close this file descriptor. May throw an exception if this is an invalid descriptor.

Reading/writing data

Programmers using the fdRead and fdWrite API should be aware that EAGAIN exceptions may occur for non-blocking IO!

fdRead Source

Arguments

:: Fd
-> ByteCount

How many bytes to read

-> IO ByteString

The bytes read

Read data from an Fd and return it as a ByteString. Throws an exception if this is an invalid descriptor, or EOF has been reached.

fdWrite :: Fd -> ByteString -> IO ByteCount Source

Write a ByteString to an Fd.

fdReadBuf Source

Arguments

:: Fd
-> Ptr Word8

Memory in which to put the data

-> ByteCount

Maximum number of bytes to read

-> IO ByteCount

Number of bytes read (zero for EOF)

Read data from an Fd into memory. This is exactly equivalent to the POSIX read function.

fdWriteBuf Source

Arguments

:: Fd
-> Ptr Word8

Memory containing the data to write

-> ByteCount

Maximum number of bytes to write

-> IO ByteCount

Number of bytes written

Write data from memory to an Fd. This is exactly equivalent to the POSIX write function.

Seeking

fdSeek :: Fd -> SeekMode -> FileOffset -> IO FileOffset Source

May throw an exception if this is an invalid descriptor.

File options

data FdOption Source

Constructors

AppendOnWrite

O_APPEND

CloseOnExec

FD_CLOEXEC

NonBlockingRead

O_NONBLOCK

SynchronousWrites

O_SYNC

queryFdOption :: Fd -> FdOption -> IO Bool Source

May throw an exception if this is an invalid descriptor.

setFdOption :: Fd -> FdOption -> Bool -> IO () Source

May throw an exception if this is an invalid descriptor.

Locking

type FileLock = (LockRequest, SeekMode, FileOffset, FileOffset) Source

data LockRequest Source

Constructors

ReadLock
WriteLock
Unlock

getLock :: Fd -> FileLock -> IO (Maybe (ProcessID, FileLock)) Source

May throw an exception if this is an invalid descriptor.

setLock :: Fd -> FileLock -> IO () Source

May throw an exception if this is an invalid descriptor.

waitToSetLock :: Fd -> FileLock -> IO () Source

May throw an exception if this is an invalid descriptor.

Pipes

createPipe :: IO (Fd, Fd) Source

The createPipe function creates a pair of connected file descriptors. The first component is the fd to read from, the second is the write end. Although pipes may be bidirectional, this behaviour is not portable and programmers should use two separate pipes for this purpose. May throw an exception if this is an invalid descriptor.

Duplicating file descriptors

dup :: Fd -> IO Fd Source

May throw an exception if this is an invalid descriptor.

dupTo :: Fd -> Fd -> IO Fd Source

May throw an exception if this is an invalid descriptor.

Converting file descriptors to/from Handles

handleToFd :: Handle -> IO Fd Source

Extracts the Fd from a Handle. This function has the side effect of closing the Handle (and flushing its write buffer, if necessary), without closing the underlying Fd.

Warning: This means you take over ownership of the underlying Fd. hClose on the Handle will no longer have any effect. This will break common patterns to avoid file descriptor leaks, such as using hClose in the cleanup action of Control.Exception.bracket, making it a silent no-op. Be sure to close the returned Fd yourself to not leak it.

fdToHandle :: Fd -> IO Handle Source

Converts an Fd into a Handle that can be used with the standard Haskell IO library (see System.IO).

© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/9.12.1/docs/libraries/unix-2.8.6.0-e212/System-Posix-IO-ByteString.html