SYMLINK(2)

ИМЯ
symlink - создать новое имя для файла

ОБЗОР
#include <unistd.h>

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

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

symlink():
    _BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED || _POSIX_C_SOURCE >= 200112L

ОПИСАНИЕ
symlink() создает символьную ссылку с именем newpath, которая содержит строку oldpath. Символьные ссылки интерпретируются «на лету», как-будто бы содержимое ссылки было подставлено вместо пути, по которому идёт поиск файла или каталога. Символьные ссылки могут содержать компоненты пути .., которые (если используются в начале ссылки) ссылаются на родительский каталог того каталога, в котором находится ссылка. Символьная ссылка (также известная как «мягкая ссылка») может указывать как на существующий, так и на несуществующий файлы; в последнем случае такая ссылка называется повисшей (dangling). Права доступа символьной ссылки не имеют значения; принадлежность определённому владельцу игнорируется при переходе по ссылке, но проверяется при удалении или переименовании ссылки, а также ссылки в каталог с установленным закрепляющим (sticky) битом (S_ISVTX). Если newpath существует, то он не будет перезаписан.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении возвращается 0. В случае ошибки возвращается -1, а errno устанавливается в соответствующее значение.

ОШИБКИ

EACCES
    Нет прав на запись в каталог, содержащийся в newpath, или в одном из каталогов в newpath не разрешён поиск (см. также path_resolution(7)).

EEXIST
    newpath уже существует.

EFAULT
    Значения oldpath и newpath указывают за пределы доступного адресного пространства.

EIO Произошла ошибка ввода-вывода.

ELOOP
    Во время определения newpath встретилось слишком много символьных ссылок.

ENAMETOOLONG
    Слишком длинное значение аргумента oldpath или newpath.

ENOENT
    Компонент пути newpath не существует или является повисшей символьной ссылкой.

ENOMEM
    Недостаточное количество памяти ядра.

ENOSPC
    На устройстве, содержащем файл, нет места для создания нового элемента каталога.

ENOTDIR
    Компонент пути, использованный как каталог в newpath, в действительности таковым не является.

EPERM
    Файловая система, содержащая newpath, не поддерживает создание символьных ссылок.

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

СООТВЕТСТВИЕ СТАНДАРТАМ
SVr4, 4.3BSD, POSIX.1-2001.

ЗАМЕЧАНИЯ
Не выполняется проверка oldpath. При удаление имени, на который ссылается символьная ссылка, произойдёт удаление файла (если только у него нет других жёстких ссылок). Если такое поведение нежелательно, используйте link(2).

СМОТРИТЕ ТАКЖЕ
ln(1), lchown(2), link(2), lstat(2), open(2), readlink(2), rename(2), symlinkat(2), unlink(2), path_resolution(7), symlink(7)