symlink(2)

NUME
symlink, symlinkat - creează un nou nume pentru un fișier

BIBLIOTECA
Biblioteca C standard (libc, -lc)

SINOPSIS
#include <unistd.h>

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

#include <fcntl.h>           /* Definirea constantelor AT_* */
#include <unistd.h>

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

    Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):

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

symlinkat():
    Începând cu glibc 2.10
        _POSIX_C_SOURCE >= 200809L
    Înainte de glibc 2.10:
        _ATFILE_SOURCE

DESCRIERE
symlink() creează o legătură simbolică numită linkpath care conține șirul target.

Legăturile simbolice sunt interpretate în timpul rulării ca și cum conținutul legăturii ar fi fost substituit în ruta urmată pentru a găsi un fișier sau un director.

Legăturile simbolice pot conține componente de rută .., care (dacă sunt utilizate la începutul legăturii) se referă la directoarele părinte ale celui în care se află legătura.

O legătură simbolică (cunoscută și sub denumirea de legătură soft) poate indica un fișier existent sau unul inexistent; în acest din urmă caz, se vorbește despre o legătură suspendată.

Permisiunile unei legături simbolice sunt irelevante; proprietatea este ignorată atunci când se urmează legătura (cu excepția cazului în care este activată caracteristica protected_symlinks, așa cum se explică în proc(5)), dar este verificată atunci când se solicită eliminarea sau redenumirea legăturii și legătura se află într-un director cu bitul lipicios (S_ISVTX) activat.

Dacă linkpath există, acesta nu va fi suprascris.

  symlinkat()
Apelul de sistem symlinkat() funcționează exact în același mod ca symlink(), cu excepția diferențelor descrise aici.

Dacă numele rutei specificat în linkpath este relativ, atunci acesta este interpretat relativ la directorul la care se referă descriptorul de fișier newdirfd (în loc să fie interpretat relativ la directorul de lucru curent al procesului apelant, așa cum se întâmplă în cazul symlink() pentru un nume de rută relativ).

Dacă linkpath este relativ și newdirfd este valoarea specială AT_FDCWD, atunci linkpath este interpretat relativ la directorul de lucru curent al procesului apelant (ca symlink()).

Dacă linkpath este absolută, atunci newdirfd este ignorată.

Consultați openat(2) pentru o explicație a necesității symlinkat().

VALOAREA RETURNATĂ
În caz de succes, se returnează zero. În caz de eroare, se returnează -1, iar errno este configurată pentru a indica eroarea.

ERORI-IEȘIRE

EACCES
    Accesul în scriere la directorul care conține linkpath este refuzat sau unul dintre directoarele din prefixul rutei linkpath nu permite permisiunea de căutare. (A se vedea de asemenea, path_resolution(7).)

EBADF
    (symlinkat()) linkpath este relativă, dar newdirfd nu este nici AT_FDCWD, nici un descriptor de fișier valid.

EDQUOT
    Cota de resurse a utilizatorului pe sistemul de fișiere a fost epuizată. Resursele pot fi noduri -i sau blocuri de disc, în funcție de implementarea sistemului de fișiere.

EEXIST
    linkpath există deja.

EFAULT
    target sau linkpath indică în afara spațiului dvs. de adrese accesibil.

EIO A apărut o eroare de In/Ieș.

ELOOP
    Au fost găsite prea multe legături simbolice în rezolvarea linkpath.

ENAMETOOLONG
    target sau linkpath era prea lungă.

ENOENT
    O componentă a directorului din linkpath nu există sau este o legătură simbolică suspendată, sau target sau linkpath este un șir gol.

ENOENT
    (symlinkat()) linkpath este o rută relativă, iar newdirfd se referă la un director care a fost șters.

ENOMEM
    Nu a fost disponibilă suficientă memorie pentru nucleu.

ENOSPC
    Dispozitivul care conține fișierul nu are loc pentru noua intrare în director.

ENOTDIR
    O componentă utilizată ca director în linkpath nu este, de fapt, un director.

ENOTDIR
    (symlinkat()) linkpath este relativă, iar newdirfd este un descriptor de fișier care se referă la un fișier, altul decât un director.

EPERM
    Sistemul de fișiere care conține linkpath nu acceptă crearea de legături simbolice.

EROFS
    linkpath se află pe un sistem de fișiere numai-pentru-citire.

STANDARDE
POSIX.1-2024.

ISTORIC

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

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

  note glibc
Pe nucleele mai vechi, unde symlinkat() nu este disponibilă, funcția de învăluire glibc revine la utilizarea symlink(). Când linkpath este un nume de rută relativă, glibc construiește un nume de rută bazat pe legătura simbolică din /proc/self/fd care corespunde argumentului newdirfd.

NOTE
Nu se efectuează nicio verificare a target.

Ștergerea numelui la care face referire o legătură simbolică va șterge efectiv fișierul (cu excepția cazului în care acesta are și alte legături fizice). Dacă nu doriți acest comportament, utilizați link(2).

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

TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.