symlink(2)

الاسم
symlink, symlinkat - إنشاء اسم جديد لملف

المكتبة
مكتبة سي المعيارية (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.

تُفسر الروابط الرمزية وقت التشغيل كما لو أن محتويات الرابط قد استُبدلت في المسار المُتبع للعثور على ملف أو دليل.

قد تحتوي الروابط الرمزية على مكونات مسار ..، والتي (إذا استُخدمت في بداية الرابط) تشير إلى الدلائل الأصلية للدليل الذي يوجد فيه الرابط.

قد يشير الرابط الرمزي (المعروف أيضًا بالرابط اللين) إلى ملف موجود أو إلى ملف غير موجود؛ الحالة الأخيرة تُعرف بالرابط المعلق.

صلاحيات الرابط الرمزي غير ذات صلة؛ تُتجاهل الملكية عند اتباع الرابط (إلا عند تمكين ميزة protected_symlinks، كما هو موضح في proc(5))، ولكن تُفحص عند طلب إزالة الرابط أو إعادة تسميته وكان الرابط في دليل معيّنة البتة اللاصقة (S_ISVTX).

إذا كان linkpath موجودًا، فلن يُستبدل.

  symlinkat()
تعمل استدعاء النظام symlinkat() بنفس طريقة symlink()، باستثناء الاختلافات الموصوفة هنا.

إذا كان اسم المسار المُعطى في linkpath نسبيًا، فإنه يُفسر نسبة إلى الدليل المشار إليه بواصف الملف newdirfd (بدلاً من نسبته إلى دليل العمل الحالي للعملية المستدعية، كما تفعل symlink() لاسم مسار نسبي).

إذا كان linkpath نسبيًا و newdirfd هو القيمة الخاصة AT_FDCWD، فإن linkpath يُفسر نسبة إلى دليل العمل الحالي للعملية المستدعية (مثل symlink()).

إذا كان linkpath مطلقًا، فإن newdirfd يُتجاهل.

انظر openat(2) لشرح الحاجة إلى symlinkat().

قيمة الإرجاع
عند النجاح، يُعاد الصفر. وعند حدوث خطأ، يُعاد الرقم -1، ويُضبط errno للإشارة إلى الخطأ.

الأخطاء

EACCES
    وصل الكتابة إلى الدليل المحتوي على linkpath مرفوض، أو أحد الدلائل في بادئة مسار linkpath لم يسمح بصلاحية البحث. (انظر أيضًا path_resolution(7).)

EBADF
    (symlinkat()) linkpath نسبي ولكن newdirfd ليس AT_FDCWD ولا واصف ملف صالح.

EDQUOT
    حصة المستخدم من الموارد على نظام الملفات قد استُنفدت. قد تكون الموارد عقد فهرسة أو كتل قرص، اعتمادًا على تطبيق نظام الملفات.

EEXIST
    linkpath موجود بالفعل.

EFAULT
    target أو linkpath يشير إلى خارج مساحة العنوان القابلة للوصول.

EIO حدث خطأ إدخال/إخراج.

ELOOP
    وُجد عدد كبير جدًا من الروابط الرمزية أثناء حل linkpath.

ENAMETOOLONG
    target أو linkpath طويل جدًا.

ENOENT
    مكون دليل في linkpath غير موجود أو هو رابط رمزي معلق، أو target أو linkpath سلسلة فارغة.

ENOENT
    (symlinkat()) linkpath اسم مسار نسبي و newdirfd يشير إلى دليل قد حُذف.

ENOMEM
    ذاكرة النواة المتوفرة غير كافية.

ENOSPC
    الجهاز الذي يحتوي على الملف ليس به مساحة لمدخل الدليل الجديد.

ENOTDIR
    مكون يُستخدم كدليل في linkpath ليس في الواقع دليلاً.

ENOTDIR
    (symlinkat()) linkpath نسبي و newdirfd واصف ملف يشير إلى ملف غير دليل.

EPERM
    نظام الملفات المحتوي على linkpath لا يدعم إنشاء الروابط الرمزية.

EROFS
    linkpath على نظام ملفات للقراءة فقط.

المعايير
POSIX.1-2024.

التاريخ

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

symlinkat()
    POSIX.1-2008. لينكس 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)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.