Provided by: manpages-ru-dev_4.19.0-7_all bug

ИМЯ

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

LIBRARY

       Standard C library (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():
           Since glibc 2.10:
               _POSIX_C_SOURCE >= 200809L
           Before 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().

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

       On success, zero is returned.  On error, -1 is returned, and errno is set to indicate  the
       error.

ОШИБКИ

       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 расположен в файловой системе, доступной только для чтения.

ВЕРСИИ

       symlinkat()  was added in Linux 2.6.16; library support was added in glibc 2.4.

СТАНДАРТЫ

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

       symlinkat(): POSIX.1-2008.

ЗАМЕЧАНИЯ

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

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

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

СМ. ТАКЖЕ

       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>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если вы обнаружите ошибки в переводе  этой  страницы  руководства,  пожалуйста,  отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.