696___________________________________________Глава 1

В начале работы любой программы автоматически открывается три потока с
своими дескрипторами:

поток	дескриптор	
stdin	0	стандартный входной поток — обычно клавиатура
stdout	1	стандартный выходной поток — обычно экран
stderr	2	стандартный поток сообщений об ошибках

Но программа может и явным образом открывать любые новые файлы с део
рипторами.

Функции, работающие с дескрипторами файлов, описаны в файле io.h. Ряд и
пользуемых флагов и констант описан также в файлах stdio.h, fcntl.h, sys\ types,
и sys\stst.h.

Файл открывается функцией open, которая возвращает дескриптор файла:

tfinclude <fcntl.h>

#include<io.h>

int openlconst char *path, int access, unsigned mode);

Параметр path указывает имя открываемого файла. Параметр access опред
ляет режим доступа к файлу. Параметр mode является не обязательным и зада
режим открытия файла.

Параметр access формируется операцией ИЛИ (|) из ряда флагов. Вот некот?
рые из них (полный список см. в главе 14 в разделе 14.12.1):

ORDONLY только для чтения

0_WRONLY только для записи

0_RDWR для чтения и записи

0_CREAT создание нового файла

0_TRUNC если файл существует, он урезается до О

0_BINARY двоичный файл

0_ТЕХТ текстовый файл

Параметр mode может принимать значения:

S_IWRITE                         разрешение записи
S_IREAD                          разрешение чтения
S_IREAD | S_IWRITE               разрешение записи и чтения

Например, операторы

int handle;

if ((handle = open("Test.txt", 0_CREAT I 0_TEXT)) == -1)
{

ShowMessage("Файл не удается создать");

return;

}

пытаются создать новый текстовый файл, а в случае неудачи (функция open верн
ла -1) отображают сообщение об ошибке.