Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Материалы / ВВОД_вывод_сокет.doc
Скачиваний:
25
Добавлен:
01.05.2014
Размер:
201.22 Кб
Скачать

Дата печати 16.11.2003 11:28 PMстр. 26из26

Подсистема управления вводом-выводом

Подсистема управления вводом-выводом позволяет процессам поддерживать связь с периферийными устройствами, такими как накопители на магнитных дисках, терминалы, принтеры и сети, с одной стороны, и с модулями ядра, которые управляют устройствами и именуются драйверами устройств, с другой. Между драйверами устройств и типами устройств обычно существует однозначное соответствие: в системе может быть один дисковый драйвер для управления всеми дисководами, и один терминальный драйвер для управления всеми терминалами. Если в системе имеются однотипные устройства, полученные от разных изготовителей, в этом случае можно трактовать однотипные устройства как устройства двух различных типов и иметь для них два отдельных драйвера, поскольку таким устройствам для выполнения одних и тех же операций могут потребоваться разные последовательности команд. Один драйвер управляет множеством физических устройств данного типа. Например, один терминальный драйвер может управлять всеми терминалами, подключенными к системе. Драйвер различает устройства, которыми управляет: Выходные данные, предназначенные для одного терминала, не должны быть посланы на другой.

Для выполнения базовых операций предназначены следующие функции:

creat()

создание файла,

open()

открытие файла,

close()

закрытие файла,

read()

чтение файла,

write()

запись в файл.

ioctl()

управление файлом,

dup(), dup2()

дублирование дескриптора файла,

read

creat - создание файла

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

Int creat(const char *path, mode_t mode);

path

(маршрутное) имя файла;

mode

режим доступа к файлу.

Вызов функции

creat(path, mode);

эквивалентен вызову

open(path, O_WRONLY | O_CREAT | O_TRUNC, mode);

open - открытие файла

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

Int open(const char *path, int oflag, ...);

 

O_RDONLY

открыть файл только для чтения;

 

O_WRONLY

открыть файл только для записи;

 

O_RDWR

открыть файл для чтения и записи..

Следующие флаги могут присутствовать в значении oflag в любой комбинации.

 

O_CREAT

создание файла;

 

O_NDELAY

если файл является специальным файлом устройства, функция возвращает управление, не дожидаясь ответного сигнала;

dup

dup(fildes)

Int fildes;

Функция dup создает копию указанного дескриптора файла, возвращая дескриптор с наименьшим номером из имеющихся в системе. Старый и новый дескрипторы используют один и тот же указатель на файл, а также и другие совпадающие атрибуты.

close

#include <unistd.h>

Int close(int fildes);

Функция close закрывает дескриптор файла, полученный в результате выполнения функций open, creat, dup, pipe или унаследованный от функции fork. Действия при закрытии файлов соответствующих физическим устройствам определяются драйверами устройств. В силу этого здесь приводятся лишь допустимые действия драйверов устройств при закрытии файла. При наличии в очереди к устройству необработанных заявок на ввод/вывод драйвер может попытаться их отменить. Те заявки, которые не были отменены, будут обрабатываться так, как если бы функция close() еще не вызывалась. При этом функция close() не дожидается исполнения этих заявок.

read(fildes,buf,size)

Соседние файлы в папке Материалы