Spec-Zone.ru › Haskell 9

GHC.IO.FD

Авторские права (c) Университет Глазго 1994-2008
Лицензия см. libraries/base/LICENSE
Поддержка libraries@haskell.org
Стабильность внутренняя
Переносимость непереносимая
Safe Haskell Безопасный
Язык Haskell2010

Описание

Необработанные операции чтения/записи на дескрипторах файлов

data FD Исходный код

Конструкторы

FD

Поля

  • fdFD :: !CInt
  • fdIsNonBlocking :: !Int

    В Unix нам нужно знать, установлен ли этот FD O_NONBLOCK. Если установлен, то мы можем использовать более эффективные функции (а именно, небезопасный FFI) для чтения/записи в него. В противном случае используется безопасный FFI.

    O_NONBLOCK пока не влияет на обычные файлы и блокирующие устройства, поэтому этот флаг должен быть отключен для них. Хотя чтение из файла не может блокироваться бесконечно (в отличие от чтения из сокета или канала), оно может заблокировать весь запуск на «короткий» промежуток времени: вы не можете читать файл с гибкого диска или сетевого ресурса без задержки.

Экземпляры
Подробности об экземплярах
BufferedIO FD Источник

С версии: base-4.1.0.0

Подробности об экземпляре

Определено в GHC.Internal.IO.FD

Методы

newBuffer :: FD -> BufferState -> IO (Buffer Word8) Источник

fillReadBuffer :: FD -> Buffer Word8 -> IO (Int, Buffer Word8) Источник

fillReadBuffer0 :: FD -> Buffer Word8 -> IO (Maybe Int, Buffer Word8) Источник

emptyWriteBuffer :: FD -> Buffer Word8 -> IO (Buffer Word8) Источник

flushWriteBuffer :: FD -> Buffer Word8 -> IO (Buffer Word8) Источник

flushWriteBuffer0 :: FD -> Buffer Word8 -> IO (Int, Buffer Word8) Источник

IODevice FD Источник

С версии: base-4.1.0.0

Подробности об экземпляре

Определено в GHC.Internal.IO.FD

Методы

ready :: FD -> Bool -> Int -> IO Bool Источник

close :: FD -> IO () Источник

isTerminal :: FD -> IO Bool Источник

isSeekable :: FD -> IO Bool Источник

seek :: FD -> SeekMode -> Integer -> IO Integer Источник

tell :: FD -> IO Integer Источник

getSize :: FD -> IO Integer Источник

setSize :: FD -> Integer -> IO () Источник

setEcho :: FD -> Bool -> IO () Источник

getEcho :: FD -> IO Bool Источник

setRaw :: FD -> Bool -> IO () Источник

devType :: FD -> IO IODeviceType Источник

dup :: FD -> IO FD Источник

dup2 :: FD -> FD -> IO FD Источник

RawIO FD Источник

С версии: base-4.1.0.0

Подробности экземпляра

Определено в GHC.Internal.IO.FD

Методы

read :: FD -> Ptr Word8 -> Word64 -> Int -> IO Int Исходный код

readNonBlocking :: FD -> Ptr Word8 -> Word64 -> Int -> IO (Может быть Int) Исходный код

write :: FD -> Ptr Word8 -> Word64 -> Int -> IO () Исходный код

writeNonBlocking :: FD -> Ptr Word8 -> Word64 -> Int -> IO Int Исходный код

Show FD Исходный код

С момента: base-4.1.0.0

Подробности экземпляра

Определено в GHC.Internal.IO.FD

Методы

showsPrec :: Int -> FD -> ShowS Исходный код

show :: FD -> Строка Исходный код

showList :: [FD] -> ShowS Исходный код

openFileWith Исходный код

Аргументы

:: Путь к файлу

файл для открытия

-> Режим ввода/вывода

режим открытия файла

-> Булево значение

открыть файл в режиме без ожидания? Это не влияет на обычные файлы и устройства блокировки: они всегда открываются в режиме ожидания. См. fdIsNonBlocking для более подробного обсуждения.

-> (FD -> Тип устройства ввода/вывода -> IO r)

act1: Действие для выполнения над дескриптором файла с восстановленным режимом маскирования и обработчиком исключений, закрывающим файл при возникновении исключения.

-> ((forall x. IO x -> IO x) -> r -> IO s)

act2: Действие для выполнения с замаскированными асинхронными исключениями и без обработчика исключений.

-> IO s

Открыть файл и выполнить FD для него. Обнуляет размер файла до нуля, когда IOMode имеет значение WriteMode.

openFileWith принимает два действия, act1 и act2, для выполнения после открытия файла.

act1 передаёт дескриптор файла и тип устройства ввода/вывода для вновь открытого файла. Если в act1 возникает исключение, то файл будет закрыт. act1 не должен закрывать сам файл. Если он это сделает, а затем получит исключение, обработчик исключений попытается закрыть его ещё раз, что недопустимо.

act2 выполняется с замаскированными асинхронными исключениями. Ему передаётся функция для восстановления режима маскирования и результат act1. Он /не должен/ генерировать исключение (или передавать его через прерывимую операцию), не закрыв предварительно файл или не обеспечив его закрытие. act2 может закрыть файл, но не обязан этого делать. Если act2 оставляет файл открытым, то он останется открытым по возвращении из openFileWith.

Код, вызывающий openFileWith, который хочет установить финализатор для закрытия файла, должен сделать это в act2. Делать это в act1 может потенциально привести к тому, что финализатор закроет файл первым, а затем обработчик исключений. См. openFile' для примера такого использования. В любом случае, вызывающий код отвечает за то, чтобы файл был в конечном итоге закрыт, возможно, используя bracket.

openFile Исходный код

Аргументы

:: Путь к файлу

файл для открытия

-> Режим ввода/вывода

режим открытия файла

-> Булево значение

открыть файл в режиме без ожидания?

-> IO (FD, Тип устройства ввода/вывода)

Открыть файл и выполнить FD для него. Обнуляет размер файла до нуля, когда IOMode имеет значение WriteMode. Эта функция трудно использовать без потенциальной утечки дескриптора файла при возникновении исключения. В частности, она должна использоваться с замаскированными исключениями, что немного неудобно, так как поток будет неперерываемым, пока путь к файлу не будет закодирован. Используйте openFileWith вместо этого.

mkFD Исходный код

Аргументы

:: CInt
-> Режим ввода/вывода
-> Может быть (Тип устройства ввода/вывода, CDev, CIno)
-> Булево значение

является сокетом (в Windows)

-> Булево значение

находится в режиме без ожидания на Unix

-> IO (FD, Тип устройства ввода/вывода)

Создать FD из существующего дескриптора файла. Возвращает ошибку, если FD относится к каталогу. Если FD относится к файлу, mkFD блокирует файл в соответствии с семантикой блокировки "один писатель/несколько читателей" Haskell 2010 (поэтому нам нужен и аргумент IOMode).

release :: FD -> IO () Исходный код

setNonBlockingMode :: FD -> Булево -> IO FD Источник

readRawBufferPtr :: Строка -> FD -> Ptr Word8 -> Целое -> CSize -> IO Целое Источник

readRawBufferPtrNoBlock :: Строка -> FD -> Ptr Word8 -> Целое -> CSize -> IO Целое Источник

writeRawBufferPtr :: Строка -> FD -> Ptr Word8 -> Целое -> CSize -> IO CInt Источник

stdin :: FD Источник

stdout :: FD Источник

stderr :: FD Источник

© 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/base-4.21.0.0-8e62/GHC-IO-FD.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API