Функции С и C++, библиотек C++Builder, API Windows_______________849

навливается на начало файла. При ошибке возвращается -1, а еггпо (см. раз-
дел 14.5.1) может принимать значения EINVACC, EACCES, ENOENT, EMFILE.

Функция creattemp создает временный файл с уникальным именем и атрибу-
тами attrib в каталоге path. Вид файла — текстовый или двоичный, определяется
значением глобальной переменной _fmode (0_TEXT или 0_BINARY). Параметр
attrib может равняться нулю или принимать уже рассмотренные значения
FA_HIDDEN, FA_RDONLY или FAJ3YSTEM (см. раздел 14.12.1).

Число файлов одновременно открытых перечисленными функциями, не дол-
жно превышать HANDLE_MAX.

Функции close, __rtl_close и FileClose закрывают файл, открытый ранее функ-
циями creat, creatnew, creattemp, dup, dup2, open, _rtl_creat, _rtl_open, FileO-
pen. При этом в выходной файл не записывается автоматически признак конца
файла Ctrl-Z. Если этот символ требуется, вам надо предварительно записать его
явным образом.

При успешном завершении функций они возвращают 0. При ошибке возвра-
щают значение -1 и задают глобальной переменной еггпо (см. раздел 14.5.1) зна-
чение EBADF.

Таким образом, стандартная схема работы с файлами, связанными с дескрип-
торами, следующая:

int hout = open("output.txt", 0_CREAT I 0_WRONLY,S_IWRITE) ;

close(hout) ;

Примеры работы с этими файлами см. в главе 12 в разделе 12.9.2.4.
Функции FileOpen, FileCreate и FileClose дают альтернативный подход к от-
крытию и закрытию файлов, связанных с дескрипторами. Функция FileOpen от-
крывает файл в режиме Mode, задаваемом константами fmShare (см. раз-
дел 14.12.1). В дальнейшем с этими файлами можно работать с помощью функци
FileRead, FileWrite, FileSeek, описанных в разделе 14.12.4.

При совместном доступе к файлам нескольких приложений помимо установки
флагов доступа может использоваться блокировка и деблокировка отдельных об-
ластей файла с помощью функций lock, unlock, locking. При работе с этими функ-
циями в DOS предварительно должна быть загружена программа SHARE.EXE. В
функции locking режим работы определяется параметром cmd:

LK_LOCK    Блокировать область. Если не удалось, то прежде, чем отказать-
ся от блокировки, делается новая попытка через 10 секунд

LK_RLCK    To же, что LK_LOCK

LK_NBLCK   Блокировать область. Если не удалось, то происходит отказ от
попытки блокировки

LKJSTBRLCK То же, что LKJMBLCK

LK_UNLCK   Разблокировать ранее заблокированную область файла

При успешном завершении функции возвращается 0. При неудаче возвраща-
ется -1, а значение еггпо (см. раздел 14.5.1) может иметь значения EACCES,
EBADF, EDEADLOCK — невозможность блокировки, несмотря на повторную по-
пытку через 10 секунд (при cmd равном LKJLOCK или LK_RLCK), EINVAL —
ошибка в cmd или не загружена программа SHARE.EXE.

Функции dup и dup2 позволяют оперировать с дескрипторами файлов. Функ-
ция dup создает и возвращает дубликат (псевдоним) дескриптора handle. Дубли-
кат связан с тем же открытым файлом или устройством, что и исходный дескрип-
тор, имеет тот же режим доступа (только чтение, только запись, чтение и запись) и