Provided by: manpages-ru-dev_4.27.0-1_all bug

НАИМЕНОВАНИЕ

       symlink, symlinkat - создаёт новое имя для файла

БИБЛИОТЕКА

       Стандартная библиотека языка C (libc, -lc)

ОБЗОР

       #include <unistd.h>

       int symlink(const char *target, const char *linkpath);

       #include <fcntl.h>           /* определения констант AT_* */
       #include <unistd.h>

       int symlinkat(const char *target, int newdirfd, const char *linkpath);

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

       symlink():
           _XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200112L
               || /* glibc <= 2.19: */ _BSD_SOURCE

       symlinkat():
           Начиная с glibc 2.10:
               _POSIX_C_SOURCE >= 200809L
           До glibc 2.10:
               _ATFILE_SOURCE

ОПИСАНИЕ

       Вызов symlink() создаёт символьную ссылку с именем linkpath, которая содержит строку target.

       Символьные  ссылки  интерпретируются  «на  лету»,  как будто бы содержимое ссылки было подставлено вместо
       пути, по которому идёт поиск файла или каталога.

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

       Символьная  ссылка  (также  известная  как «мягкая ссылка») может указывать как на существующий, так и на
       несуществующий файлы; в последнем случае такая ссылка называется повисшей (dangling).

       The permissions of a symbolic link are irrelevant; the ownership  is  ignored  when  following  the  link
       (except  when  the  protected_symlinks  feature is enabled, as explained in proc(5)), but is checked when
       removal or renaming of the link is requested and the link is in a directory with the sticky bit (S_ISVTX)
       set.

       Если linkpath существует, то он не будет перезаписан.

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

       Если  в  linkpath  задан  относительный путь, то он считается относительно каталога, на который ссылается
       файловый дескриптор newdirfd (а не относительно текущего рабочего каталога вызывающего процесса, как  это
       делается в symlink()).

       Если  в linkpath задан относительный путь и значение newdirfd равно AT_FDCWD, то linkpath рассматривается
       относительно текущего рабочего каталога вызывающего процесса (как symlink()).

       Если в linkpath задан абсолютный путь, то newdirfd игнорируется.

       See openat(2)  for an explanation of the need for symlinkat().

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       При успешном выполнении возвращается 0. При ошибке возвращается -1, а в errno содержится код ошибки.

ОШИБКИ

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

       EBADF  (symlinkat())  linkpath is relative but newdirfd is neither AT_FDCWD nor a valid file descriptor.

       EDQUOT Исчерпана  пользовательская  квота  на  ресурсы  файловой  системы. Ресурсами могут быть иноды или
              дисковые блоки, в зависимости от реализации файловой системы.

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

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

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

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

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

       ENOENT Компонент пути linkpath не существует или является повисшей символьной ссылкой или значение target
              или linkpath равно пустой строке.

       ENOENT (symlinkat())  linkpath is a relative pathname and newdirfd refers to a directory  that  has  been
              deleted.

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

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

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

       ENOTDIR
              (symlinkat())   linkpath  is  relative and newdirfd is a file descriptor referring to a file other
              than a directory.

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

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

СТАНДАРТЫ

       POSIX.1-2008.

ИСТОРИЯ

       symlink()
              SVr4, 4.3BSD, POSIX.1-2001.

       symlinkat()
              POSIX.1-2008.  Linux 2.6.16, glibc 2.4.

   Замечания по glibc
       В старых ядрах, где symlinkat() отсутствует, обёрточная функция glibc использует symlink(). Если linkpath
       является относительным путём, то glibc собирает путь относительно символической ссылки  в  /proc/self/fd,
       которая соответствует аргументу newdirfd.

ПРИМЕЧАНИЯ

       Не выполняется проверка target.

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

СМОТРИТЕ ТАКЖЕ

       ln(1),   namei(1),   lchown(2),   link(2),   lstat(2),   open(2),   readlink(2),   rename(2),  unlink(2),
       path_resolution(7), symlink(7)

ПЕРЕВОД

       Русский перевод этой страницы руководства разработал(и)  Alexander  Golubev  <fatzer2@gmail.com>,  Azamat
       Hackimov   <azamat.hackimov@gmail.com>,   Hotellook,   Nikita   <zxcvbnm3230@mail.ru>,  Spiros  Georgaras
       <sng@hellug.gr>, Vladislav <ivladislavefimov@gmail.com>, Yuri Kozlov  <yuray@komyakino.ru>,  Иван  Павлов
       <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>

       Этот  перевод является свободной программной документацией; он распространяется на условиях общедоступной
       лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html  версии  3  или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

       Если  вы  обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом
       разработчику(ам)  по  его(их)  адресу(ам)  электронной  почты  или  по   адресу   списка рассылки русских
       переводчиков.

Справочные страницы Linux 6.9.1                   2 мая 2024 г.                                       symlink(2)