| symlink(2) | System Calls Manual | symlink(2) |
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);
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() работает также как системный вызов 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 содержится код ошибки.
POSIX.1-2008.
В старых ядрах, где 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 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков.
| 2 мая 2024 г. | Справочные страницы Linux 6.9.1 |