.\" -*- coding: UTF-8 -*- .\" Copyright 1992, Drew Eckhardt .\" Copyright 1993, Ian Jackson .\" Copyright 2006-2014, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH link 2 "11 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم link, linkat \- إنشاء اسم جديد لملف .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP .P \fBint link(const char *\fP\fIoldpath\fP\fB, const char *\fP\fInewpath\fP\fB);\fP .P \fB#include \fP/* تعريف ثوابت \fBAT_*\fP */ \fB#include \fP .P \fBint linkat(int \fP\fIolddirfd\fP\fB, const char *\fP\fIoldpath\fP\fB,\fP \fB int \fP\fInewdirfd\fP\fB, const char *\fP\fInewpath\fP\fB, int \fP\fIflags\fP\fB);\fP .fi .P .RS -4 متطلبات ماكروات اختبار الميزات لـ glibc (انظر \fBfeature_test_macros\fP(7)): .RE .P \fBlinkat\fP(): .nf منذ glibc 2.10: _POSIX_C_SOURCE >= 200809L قبل glibc 2.10: _ATFILE_SOURCE .fi .SH الوصف \fBlink\fP() ينشئ رابطًا جديدًا (يُعرف أيضًا بالرابط الصلب) لملف موجود. .P إذا كان \fInewpath\fP موجودًا، فلن يتم استبداله. .P يمكن استخدام هذا الاسم الجديد تمامًا مثل القديم لأي عملية؛ يشير كلا الاسمين إلى نفس الملف (وبالتالي لهما نفس الأذونات والملكية) ومن المستحيل تحديد أي اسم كان "الأصلي". .SS linkat() تعمل استدعاء النظام \fBlinkat\fP() بنفس طريقة \fBlink\fP()، باستثناء الاختلافات الموصوفة هنا. .P إذا كان اسم المسار المعطى في \fIoldpath\fP نسبيًا، فسيتم تفسيره بالنسبة للدليل المشار إليه بواسطة واصف الملف \fIolddirfd\fP (بدلاً من نسبته إلى دليل العمل الحالي للعملية المستدعية، كما يفعل \fBlink\fP() لاسم مسار نسبي). .P إذا كان \fIoldpath\fP نسبيًا وكان \fIolddirfd\fP هو القيمة الخاصة \fBAT_FDCWD\fP، فسيتم تفسير \fIoldpath\fP بالنسبة إلى دليل العمل الحالي للعملية المستدعية (مثل \fBlink\fP()). .P إذا كان \fIoldpath\fP مطلقا، يُتجاهل \fIolddirfd\fP. .P تفسير \fInewpath\fP هو نفسه بالنسبة لـ \fIoldpath\fP، باستثناء أن مسار الملف النسبي يُفسر بالنسبة للدليل الذي يشير إليه واصف الملف \fInewdirfd\fP. .P يمكن دمج القيم التالية باستخدام OR على مستوى البت في \fIflags\fP: .TP \fBAT_EMPTY_PATH\fP (منذ لينكس 2.6.39) .\" commit 11a7b371b64ef39fc5fb1b6f2218eef7c4d035e3 .\" Before glibc 2.16, defining _ATFILE_SOURCE sufficed إذا كان \fIoldpath\fP سلسلة فارغة، فأنشئ رابطًا للملف المشار إليه بواسطة \fIolddirfd\fP (والذي قد تم الحصول عليه باستخدام علامة \fBopen\fP(2) \fBO_PATH\fP). في هذه الحالة، يمكن أن يشير \fIolddirfd\fP إلى أي نوع من الملفات باستثناء الدليل. لن يعمل هذا عمومًا إذا كان عدد روابط الملف صفرًا (الملفات المنشأة بـ \fBO_TMPFILE\fP وبدون \fBO_EXCL\fP هي استثناء). يجب أن يمتلك المستدعي صلاحية \fBCAP_DAC_READ_SEARCH\fP لاستخدام هذه العلامة. هذه العلامة خاصة بنظام Linux؛ عرّف \fB_GNU_SOURCE\fP للحصول على تعريفها. .TP \fBAT_SYMLINK_FOLLOW\fP (منذ Linux 2.6.18) افتراضيًا، لا يقوم \fBlinkat\fP() بإلغاء مرجعية \fIoldpath\fP إذا كان رابطًا رمزيًا (مثل \fBlink\fP()). يمكن تحديد العلامة \fBAT_SYMLINK_FOLLOW\fP في \fIflags\fP لجعل \fIoldpath\fP يُلغى مرجعيته إذا كان رابطًا رمزيًا. إذا كان procfs موصولًا، يمكن استخدام هذا كبديل لـ \fBAT_EMPTY_PATH\fP، كما يلي: .IP .in +4n .EX linkat(AT_FDCWD, "/proc/self/fd/", newdirfd, newname, AT_SYMLINK_FOLLOW); .EE .in .P قبل Linux 2.6.18، كانت وسيطة \fIflags\fP غير مستخدمة، وكان يجب تحديدها كـ 0. .P انظر \fBopenat\fP(2) لشرح الحاجة إلى \fBlinkat\fP(). .SH "قيمة الإرجاع" عند النجاح، يُعاد الصفر. وعند حدوث خطأ، يُعاد الرقم \-1، ويُضبط \fIerrno\fP للإشارة إلى الخطأ. .SH الأخطاء .TP \fBEACCES\fP تم رفض صلاحية الكتابة إلى الدليل الذي يحتوي على \fInewpath\fP، أو تم رفض صلاحية البحث لأحد الدلائل في بادئة مسار \fIoldpath\fP أو \fInewpath\fP. (انظر أيضًا \fBpath_resolution\fP(7).) .TP \fBEDQUOT\fP استُنفدت حصة المستخدم من كتل القرص على نظام الملفات. .TP \fBEEXIST\fP \fInewpath\fP موجود بالفعل. .TP \fBEFAULT\fP يشير \fIoldpath\fP أو \fInewpath\fP إلى خارج مساحة العناوين التي يمكن الوصول إليها. .TP \fBEIO\fP حدث خطأ إدخال/إخراج. .TP \fBELOOP\fP وُجهت روابط رمزية كثيرة جدًا عند حل \fIoldpath\fP أو \fInewpath\fP. .TP \fBEMLINK\fP الملف المشار إليه بواسطة \fIoldpath\fP لديه بالفعل الحد الأقصى لعدد الروابط إليه. على سبيل المثال، على نظام ملفات \fBext4\fP(5) الذي لا يستخدم ميزة \fIdir_index\fP، فإن الحد الأقصى لعدد الروابط الصلبة لملف هو 65,000؛ على \fBbtrfs\fP(5)، الحد هو 65,535 رابطًا. .TP \fBENAMETOOLONG\fP كان \fIoldpath\fP أو \fInewpath\fP طويلًا جدًا. .TP \fBENOENT\fP مكون دليل في \fIoldpath\fP أو \fInewpath\fP غير موجود أو هو رابط رمزي معلق. .TP \fBENOMEM\fP ذاكرة النواة المتوفرة غير كافية. .TP \fBENOSPC\fP الجهاز الذي يحتوي على الملف ليس به مساحة لمدخل الدليل الجديد. .TP \fBENOTDIR\fP مكون يُستخدم كدليل في \fIoldpath\fP أو \fInewpath\fP ليس في الواقع دليلاً. .TP \fBEPERM\fP \fIoldpath\fP هو دليل. .TP \fBEPERM\fP نظام الملفات الذي يحتوي على \fIoldpath\fP و \fInewpath\fP لا يدعم إنشاء روابط صلبة. .TP \fBEPERM\fP (منذ Linux 3.6) لا يمتلك المستدعي صلاحية إنشاء رابط صلب لهذا الملف (انظر وصف \fI/proc/sys/fs/protected_hardlinks\fP في \fBproc_sys_fs\fP(5)). .TP \fBEPERM\fP \fIoldpath\fP مُعلّم كغير قابل للتغيير أو للإلحاق فقط. (انظر \fBFS_IOC_SETFLAGS\fP(2const).) .TP \fBEROFS\fP الملف موجود في نظام ملفات للقراءة فقط. .TP \fBEXDEV\fP \fIoldpath\fP و \fInewpath\fP ليسا على نفس نظام الملفات الموصول. (يسمح Linux بوصول نظام ملفات في نقاط متعددة، لكن \fBlink\fP() لا يعمل عبر عمليات وصل مختلفة، حتى إذا كان نفس نظام الملفات موصولًا على كليهما.) .P يمكن أن تحدث الأخطاء الإضافية التالية لـ \fBlinkat\fP(): .TP \fBEBADF\fP \fIoldpath\fP (\fInewpath\fP) نسبي لكن \fIolddirfd\fP (\fInewdirfd\fP) ليس \fBAT_FDCWD\fP ولا واصف ملف صالح. .TP \fBEINVAL\fP عُيّنت قيمة علم (flag) غير صالحة في \fIflags\fP. .TP \fBENOENT\fP حُدد \fBAT_EMPTY_PATH\fP في \fIflags\fP، لكن المتصل لم يملك القدرة \fBCAP_DAC_READ_SEARCH\fP. .TP \fBENOENT\fP جرت محاولة لربط ملف \fI/proc/self/fd/NN\fP الموافق لواصف ملف أُنشئ بـ .IP .in +4n .EX open(path, O_TMPFILE | O_EXCL, mode); .EE .in .IP انظر \fBopen\fP(2). .TP \fBENOENT\fP جرت محاولة لربط ملف \fI/proc/self/fd/NN\fP الموافق لملف حُذف. .TP \fBENOENT\fP \fIoldpath\fP اسم مسار نسبي و \fIolddirfd\fP يشير إلى دليل حُذف، أو \fInewpath\fP اسم مسار نسبي و \fInewdirfd\fP يشير إلى دليل حُذف. .TP \fBENOTDIR\fP \fIoldpath\fP نسبي و \fIolddirfd\fP واصف ملف يشير إلى ملف غير الدليل؛ أو ما شابه ذلك لـ \fInewpath\fP و \fInewdirfd\fP .TP \fBEPERM\fP حُدد \fBAT_EMPTY_PATH\fP في \fIflags\fP، \fIoldpath\fP سلسلة فارغة، و \fIolddirfd\fP يشير إلى دليل. .SH الإصدارات .\" more precisely: since Linux 1.3.56 .\" For example, the default Solaris compilation environment .\" behaves like Linux, and contributors to a March 2005 .\" thread in the Austin mailing list reported that some .\" other (System V) implementations did/do the same -- MTK, Apr 05 ينص POSIX.1\-2001 على أن \fBlink\fP() يجب أن يفك إشارة \fIoldpath\fP إذا كان رابطًا رمزيًا. لكن منذ Linux 2.0، لا يفعل Linux ذلك: إذا كان \fIoldpath\fP رابطًا رمزيًا، فإن \fInewpath\fP يُنشأ كرابط (صُلب) لنفس ملف الرابط الرمزي (أي يصبح \fInewpath\fP رابطًا رمزيًا لنفس الملف الذي يشير إليه \fIoldpath\fP). تتصرف بعض التطبيقات الأخرى بنفس طريقة Linux. يغير POSIX.1\-2008 مواصفات \fBlink\fP()، مما يجعل فك إشارة \fIoldpath\fP إذا كان رابطًا رمزيًا أمرًا يعتمد على التطبيق. للتحكم الدقيق في معالجة الروابط الرمزية عند إنشاء رابط، استخدم \fBlinkat\fP(). .SS glibc على النوى الأقدم حيث \fBlinkat\fP() غير متوفر، تعود دالة الغلاف glibc إلى استخدام \fBlink\fP()، ما لم يُحدد \fBAT_SYMLINK_FOLLOW\fP. عندما يكون \fIoldpath\fP و \fInewpath\fP اسمي مسار نسبيين، تبني glibc أسماء مسار بناءً على الروابط الرمزية في \fI/proc/self/fd\fP الموافقة للوسيطين \fIolddirfd\fP و \fInewdirfd\fP. .SH المعايير POSIX.1\-2024. .SH التاريخ .TP \fBlink\fP() .\" SVr4 documents additional ENOLINK and .\" EMULTIHOP error conditions; POSIX.1 does not document ELOOP. .\" X/OPEN does not document EFAULT, ENOMEM or EIO. 4.3BSD, SVr4, POSIX.1\-1988 (لكن انظر VERSIONS). .TP \fBlinkat\fP() POSIX.1\-2008, glibc 2.4, Linux 2.6.16. .SH ملاحظات الروابط الصلبة، كما تُنشأ بواسطة \fBlink\fP()، لا يمكنها عبور أنظمة الملفات. استخدم \fBsymlink\fP(2) إذا كان ذلك مطلوبًا. .SH العلل على أنظمة ملفات NFS، قد يكون رمز الإرجاع خاطئًا في حال نفذ خادم NFS إنشاء الرابط ومات قبل أن يتمكن من الإبلاغ بذلك. استخدم \fBstat\fP(2) لمعرفة ما إذا أُنشئ الرابط. .SH "انظر أيضًا" \fBln\fP(1), \fBopen\fP(2), \fBrename\fP(2), \fBstat\fP(2), \fBsymlink\fP(2), \fBunlink\fP(2), \fBpath_resolution\fP(7), \fBsymlink\fP(7) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .