GHC.IO.FD
| Авторские права | (c) Университет Глазго 1994-2008 |
|---|---|
| Лицензия | см. libraries/base/LICENSE |
| Поддержка | libraries@haskell.org |
| Стабильность | внутренняя |
| Переносимость | непереносимая |
| Safe Haskell | Безопасный |
| Язык | Haskell2010 |
Описание
Необработанные операции чтения/записи на дескрипторах файлов
data FD Исходный код
Конструкторы
| FD | |
Поля
| |
Экземпляры
Определено в GHC.Internal.IO.FD | |
| Show FD Исходный код | С момента: base-4.1.0.0 |
Определено в GHC.Internal.IO.FD МетодыshowsPrec :: Int -> FD -> ShowS Исходный код show :: FD -> Строка Исходный код showList :: [FD] -> ShowS Исходный код | |
Аргументы
| :: Путь к файлу | файл для открытия |
| -> Режим ввода/вывода | режим открытия файла |
| -> Булево значение | открыть файл в режиме без ожидания? Это не влияет на обычные файлы и устройства блокировки: они всегда открываются в режиме ожидания. См. |
| -> (FD -> Тип устройства ввода/вывода -> IO r) |
|
| -> ((forall x. IO x -> IO x) -> r -> IO s) |
|
| -> IO s |
Открыть файл и выполнить FD для него. Обнуляет размер файла до нуля, когда IOMode имеет значение WriteMode.
openFileWith принимает два действия, act1 и act2, для выполнения после открытия файла.
act1 передаёт дескриптор файла и тип устройства ввода/вывода для вновь открытого файла. Если в act1 возникает исключение, то файл будет закрыт. act1 не должен закрывать сам файл. Если он это сделает, а затем получит исключение, обработчик исключений попытается закрыть его ещё раз, что недопустимо.
act2 выполняется с замаскированными асинхронными исключениями. Ему передаётся функция для восстановления режима маскирования и результат act1. Он /не должен/ генерировать исключение (или передавать его через прерывимую операцию), не закрыв предварительно файл или не обеспечив его закрытие. act2 может закрыть файл, но не обязан этого делать. Если act2 оставляет файл открытым, то он останется открытым по возвращении из openFileWith.
Код, вызывающий openFileWith, который хочет установить финализатор для закрытия файла, должен сделать это в act2. Делать это в act1 может потенциально привести к тому, что финализатор закроет файл первым, а затем обработчик исключений. См. openFile' для примера такого использования. В любом случае, вызывающий код отвечает за то, чтобы файл был в конечном итоге закрыт, возможно, используя bracket.
Аргументы
| :: Путь к файлу | файл для открытия |
| -> Режим ввода/вывода | режим открытия файла |
| -> Булево значение | открыть файл в режиме без ожидания? |
| -> IO (FD, Тип устройства ввода/вывода) |
Открыть файл и выполнить FD для него. Обнуляет размер файла до нуля, когда IOMode имеет значение WriteMode. Эта функция трудно использовать без потенциальной утечки дескриптора файла при возникновении исключения. В частности, она должна использоваться с замаскированными исключениями, что немного неудобно, так как поток будет неперерываемым, пока путь к файлу не будет закодирован. Используйте openFileWith вместо этого.
Аргументы
| :: 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 Источник
© 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