Символическая ссылка

#include <unistd.h>

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

Системный вызов, предназначенный для создания символической ссылки, очень похож на своего двоюродного брата для определения жесткой ссылки. Но он создает уже новый файл, содержащий указатель на старый файл (косвенный адрес).

В случае ошибки symlink() возвращает -1 и присваивает переменной errno одно из следующих значений:

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

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

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

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

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

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

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

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

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

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

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


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

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



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



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