Студопедия

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

Разделы сайта

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






Дополнительные средства ввода-вывода






 

int link (char *name1, char *name2)

с физическим файлом может быть связано несколько имен. Первое имя файл получает при создании. Последующие имена (ссылки) образуются при помощи системной функции link. Параметр name2 – это альтернативное имя для файла с именем name1.

Функция link возвращает 0 либо –1, если создать ссылку не удалось (например, файл name2 уже существует).

 

int unlink (char *name)

функция unlink удаляет элемент оглавления, соответствующий файлу, имя которого задано параметром name. Если это была последняя ссылка на файл, то файл уничтожается.

Функция unlink возвращает 0 либо –1, если файла не существует или он не может быть уничтожен.

 

long lseek (int fd, long offset, int origin)

ввод-вывод обычно бывает последовательным, т.е. каждая очередная операция чтения-записи начинается с позиции, следующей за обработанной в предыдущей операции. Однако, при желании, можно читать файл в произвольном порядке. Системная функция lseek предоставляет способ передвигаться по файлу, не читая и не записывая данные.

Функция lseek в файле с дескриптором fd устанавливает текущую позицию, смещая ее на величину offset относительно места, задаваемого значением origin. Если origin равно 0, то смещение происходит от начала файла; если 1 – относительно текущей позиции; если 2 – от конца файла. Например, если требуется добавить данные в конец файла, то прежде чем что-либо записывать в файл, нужно при помощи lseek(fd, 0L, 2) найти конец файла. Чтобы вернуться в начало файла, надо выполнить lseek(fd, 0L, 0).

Возвращаемое функцией lseek значение имеет тип long и равно установленной текущей позиции файла (последующие чтение или запись будут производиться с этой позиции). В случае ошибки lseek выдает -1. Благодаря lseek с файлами можно работать как с большими массивами с замедленным доступом.

 

int stat (char *name, struct stat *buf)

с помощью функции stat можно получить информацию о состоянии файла name. Структура stat описана в < sys/stat.h>. В этом файле также определены константы, которые можно использовать при работе с полями структуры stat.

struct stat

{ dev_t st_dev; /* устройство */

ino_t st_ino; /*номер inode */

unsigned short st_mode; /* это поле определяет, является ли данный файл обычным файлом, оглавлением, специальным блочным или специальным литерным; кроме того, st_mode содержит биты, определяющие полномочия */

short st_nlink; /* число связей */

short st_uid; /* идентификатор владельца */

short st_gid; /* идентификатор группы владельца */

dev_t st_rdev; /* для специальных файлов */

off_t st_size; /* размер файла в литерах */

time_t st_atime; /* время последнего чтения из файла */

time_t st_mtime; /* время последней записи в файл (или время его создания). На это поле не влияют изменения владельца, группы или полномочий*/

time_ st_ctime; /* это время устанавливается при записи в файл или при изменении владельца, группы или полномочий */

}

#define S_IFMT 0170000 /* маска для выделения типа файла */

#define S_IFDIR 0040000 /* оглавление-каталог */

#define S_IFCHR 0020000 /* символьно-ориентированный */

#define S_IFBLK 0060000 /* блочно-ориентированный */

#define S_IFREG 0100000 /* обычный файл */

#define S_IREAD 0000400 /* право на чтение для владельца */

#define S_IWRITE 0000200 /* право на запись для владельца */

#define S_IEXEC 0000100 /* право на выполнение для владельца */

Более подробную информацию о структуре stat и связанных с ней константах см. в файле < sys/stat.h>. Типы, подобные dev_t и ino_t, определены в < sys/types.h>.

Системный вызов stat по имени файла name возвращает полную информацию о нем, содержащуюся в inode, или –1 в случае ошибки.

Итак,

#include < sys/types.h>

#include < sys/stat.h>

struct stat stbuf;

char *name = “my_file”;

stat(name, & stbuf);

заполняет структуру stbuf информацией о файле my_file.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.