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

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

Структуры со сылками на себя | Стандартный ввод-вывод | Работа с файлами | Низкоуровневый ввод-вывод | Конвейер, перенаправление ввода-вывода | Сигналы. Фоновые процессы. | Свойства транслятора | Моделирование работы интерпретатора SHELL | Функции проверки класса литер | Арифметические преобразования при выполнении арифметических операций вида X op Y |


Читайте также:
  1. GR: основная цель, задачи и средства GR-менеджера
  2. I. Отметить противоглистные средства
  3. III. Радиорелейные средства связи
  4. Автоматизация проектирования программного обеспечения. Методы и средства структурного системного анализа и проектирования.
  5. АЛКОГОЛЬ, ТАБАК И ИНЫЕ СРЕДСТВА ВОЗДЕЙСТВИЯ НА ГЕНОФОНД И ПСИХИКУ ЧЕЛОВЕКА КАК ГЛОБАЛЬНОЕ СРЕДСТВО УПРАВЛЕНИЯ
  6. Антиаритмические средства
  7. Антисептические и дезинфицирующие средства

 

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 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Базисные средства ввода-вывода| Процессы, транспортеры, сигналы

mybiblioteka.su - 2015-2024 год. (0.005 сек.)