Создание жестких ссылок

Можно еще создавать жесткую ссылку или еще одно имя для существующего файла:

#include <unistd.h>

int link(const char *oldpath, const char *newpath);

Для одного и того же файла можно создавать несколько имен:

link(“/home/gr1/stud1”, “/home/gr2/stud2”);

Успешный вызов link() создает для пути newpath новую ссылку, указывающую на существующий файл oldpath, и возвращает значение 0. После завершения оба пути, oldpath и newpath, указывают на один и тот же файл, то есть, фактически невозможно сказать, какая из ссылок была «исходной». При ошибке возвращается -1.

EACCESS –у вызывающего процесса отсутствуют разрешения на поиск для компонента пути oldpath или у вызывающего процесса нет разрешений на запись в ката­лог, содержащий newpath.

EEXIST – путь newpath уже существует — системный вызов link () не переопределяет существующие записи каталога.

EFAULT – параметр oldpath или newpath содержит недопустимый указатель.

EIO – произошла внутренняя ошибка ввода-вывода.

ELOOP – при разрешении пути oldpath или newpath встретилось слишком много сим­волических ссылок.

EMLINK – на структуру inode, на которую указывает путь oldpath, уже указывает мак­симально допустимое количество ссылок.

ENAMETOOLONG –слишком длинное значение oldpath или newpath.

ENOENT – компонент oldpath или newpath не существует.

ENOMEM – недостаточно памяти для выполнения данного запроса.

ENOSPC – на устройстве, которому принадлежит newpath, недостаточно свободного про­странства для новой записи каталога.

ENOTDIR – компонент oldpath или newpath не является каталогом.

EPERM – файловая система, которой принадлежит newpath, не допускает создание но­вых жестких ссылок или oldpath является каталогом.

EROFS – newpath принадлежит файловой системе, доступной только для чтения.

EXDEV – пути newpath и oldpath не принадлежат одной и той же подмонтированной системе. (Linux допускает монтирование одной файловой системы в не­скольких точках, но даже в этом случае нельзя создавать жесткие ссылки ме­жду точками монтирования.)



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: