Читайте также:
|
|
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.
Дата добавления: 2015-11-14; просмотров: 37 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Базисные средства ввода-вывода | | | Процессы, транспортеры, сигналы |