Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Открытие, создание, закрытие и расцепление (UNLINK)





 

 

Кроме случая, когда по умолчанию определены стандартные

файлы ввода, вывода и ошибок, вы должны явно открывать фай-

лы, чтобы затем читать из них или писать в них. Для этой це-

ли существуют две точки входа: OPEN и CREAT.

 

Функция OPEN весьма сходна с функцией FOPEN, рассмотрен-

ной в главе 7, за исключением того, что вместо возвращения

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

ляется просто целым типа INT.

 

INT FD;

FD=OPEN(NAME,RWMODE);

 

Как и в случае FOPEN, аргумент NAME является символьной

строкой, соответствующей внешнему имени файла. Однако аргу-

мент, определяющий режим доступа, отличен: RWMODE равно: 0 -

для чтения, 1 - для записи, 2 - для чтения и записи. Если

происходит какая-то ошибка, функция OPEN возвращает "-1"; в

противном случае она возвращает действительный дескриптор

файла.

Попытка открыть файл, который не существует, является

ошибкой. Точка входа CREAT предоставляет возможность созда-

ния новых файлов или перезаписи старых. В результате обраще-

ния

 

FD=CREAT(NAME,PMODE);

 

возвращает дескриптор файла, если оказалось возможным соз-

дать файл с именем NAME, и "-1" в противном случае. Если

файл с таким именем уже существует, CREAT усечет его до ну-

левой длины; создание файла, который уже существует, не яв-

ляется ошибкой.

Если файл является совершенно новым, то CREAT создает

его с определенным режимом защиты, специфицируемым аргумен-

том PMODE. В системе файлов на UNIX с файлом связываются де-

вять битов защиты информации, которые управляют разрешением

на чтение, запись и выполнение для владельца файла, для

группы владельцев и для всех остальных пользователей. Таким

образом, трехзначное восьмеричное число наиболее удобно для

спецификации разрешений. Например, число 0755 свидетельству-

ет о разрешении на чтение, запись и выполнение для владельца

и о разрешении на чтение и выполнение для группы и всех ос-

тальных.

Для иллюстрации ниже приводится программа копирования

одного файла в другой, являющаяся упрощенным вариантом ути-

литы CP системы UNIX. (Основное упрощение заключается в том,

что наш вариант копирует только один файл и что второй аргу-

мент не должен быть справочником).

 

#DEFINE NULL 0

#DEFINE BUFSIZE 512

#DEFINE PMODE 0644/*RW FOR OWNER,R FOR GROUP,OTHERS*/

MAIN(ARGC,ARGV) /*CP: COPY F1 TO F2*/

INT ARGC;

CHAR *ARGV[];

\(

INT F1, F2, N;

CHAR BUF[BUFSIZE];

 

IF (ARGC! = 3)

ERROR("USAGE:CP FROM TO", NULL);

IF ((F1=OPEN(ARGV[1],0))== -1)

ERROR("CP:CAN'T OPEN %S", ARGV[1]);

IF ((F2=CREAT(ARGV[2],PMODE))== -1)

ERROR("CP: CAN'T CREATE %S", ARGV[2]);

WHILE ((N=READ(F1,BUF,BUFSIZE))>0)

IF (WRITE(F2,BUF,N)!=N)

ERROR("CP: WRITE ERROR", NULL);

EXIT(0);

\)

ERROR(S1,S2) /*PRINT ERROR MESSAGE AND DIE*/

CHAR *S1, S2;

\(

PRINTF(S1,S2);

PRINTF("\N");

EXIT(1);

\)

 

Существует ограничение (обычно 15 - 25) на количество

файлов, которые программа может иметь открытыми одновремен-

но. В соответствии с этим любая программа, собирающаяся ра-

ботать со многими файлами, должна быть подготовлена к пов-

торному использованию дескрипторов файлов. Процедура CLOSE

прерывает связь между дескриптором файла и открытым файлом и

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

другим файлом. Завершение выполнения программы через EXIT

или в результате возврата из ведущей программы приводит к

закрытию всех открытых файлов.

Функция расцепления UNLINK (FILENAME) удаляет из системы

файлов файл с именем FILENAME (из данного справочного фай-

ла. Файл может быть сцеплен с другим справочником, возможно,

под другим именем - примеч.переводчика).

 

Date: 2015-09-17; view: 309; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию