Scroll to navigation

SYMLINK(2) Руководство программиста Linux 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 устанавливается в соответствующее значение.

ОШИБКИ

Нет прав на запись в каталог, содержащийся в newpath, или в одном из каталогов в newpath не разрешён поиск (см. также path_resolution(7)).
newpath уже существует.
Значения oldpath и newpath указывают за пределы доступного адресного пространства.
Произошла ошибка ввода-вывода.
Во время определения newpath встретилось слишком много символьных ссылок.
Слишком длинное значение аргумента oldpath или newpath.
Компонент пути newpath не существует или является повисшей символьной ссылкой.
Недостаточное количество памяти ядра.
На устройстве, содержащем файл, нет места для создания нового элемента каталога.
Компонент пути, использованный как каталог в newpath, в действительности таковым не является.
Файловая система, содержащая newpath, не поддерживает создание символьных ссылок.
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)

2010-09-20 Linux