.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1993, Thomas Koenig .\" 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 getcwd 3 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم getcwd, getwd, get_current_dir_name \- الحصول على دليل العمل الحالي .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP .P \fBchar *getcwd(\fPsize_t size; \fB char \fP\fIbuf\fP\fB[\fP\fIsize\fP\fB], size_t \fP\fIsize\fP\fB);\fP \fBchar *get_current_dir_name(void);\fP .P \fB[[مهمل]] char *getwd(char \fP\fIbuf\fP\fB[PATH_MAX]);\fP .fi .P .RS -4 متطلبات ماكروات اختبار الميزات لـ glibc (انظر \fBfeature_test_macros\fP(7)): .RE .P \fBget_current_dir_name\fP(): .nf _GNU_SOURCE .fi .P \fBgetwd\fP(): .nf .\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED منذ glibc 2.12: (_XOPEN_SOURCE >= 500) && ! (_POSIX_C_SOURCE >= 200809L) || /* glibc >= 2.19: */ _DEFAULT_SOURCE || /* glibc <= 2.19: */ _BSD_SOURCE قبل glibc 2.12: _BSD_SOURCE || _XOPEN_SOURCE >= 500 .fi .SH الوصف ترجع هذه الدوال سلسلة محارف منتهية بقيمة خالية تحتوي على اسم مسار مطلق هو دليل العمل الحالي للعملية المستدعية. يُرجع اسم المسار كنتيجة للدالة وعبر المعامل \fIbuf\fP، إن وُجد. .P تنسخ الدالة \fBgetcwd\fP() اسم مسار مطلق لدليل العمل الحالي إلى المصفوفة المشار إليها بواسطة \fIbuf\fP، والتي طولها \fIsize\fP. .P إذا تجاوز طول اسم المسار المطلق لدليل العمل الحالي، بما في ذلك البايت الختامي الخالي، \fIsize\fP بايت، يُرجع NULL، ويُضبط \fIerrno\fP على \fBERANGE\fP؛ يجب على التطبيق التحقق من هذا الخطأ، وتخصيص مخزن مؤقت أكبر إذا لزم الأمر. .P كإضافة لمعيار POSIX.1\-2001، تخصص دالة \fBgetcwd\fP() الخاصة بـ glibc المخزن المؤقت ديناميكيًا باستخدام \fBmalloc\fP(3) إذا كان \fIbuf\fP NULL. في هذه الحالة، يكون للمخزن المؤقت المخصص الطول \fIsize\fP ما لم يكن \fIsize\fP صفرًا، حيث يُخصص \fIbuf\fP بالحجم اللازم. يجب على المستدعي تحرير المخزن المؤقت المُعاد باستخدام \fBfree\fP(3). .P ستخصص \fBget_current_dir_name\fP() باستخدام \fBmalloc\fP(3) مصفوفة كبيرة بما يكفي لاحتواء اسم المسار المطلق لدليل العمل الحالي. إذا كان المتغير البيئي \fBPWD\fP مضبوطًا، وقيمته صحيحة، فستُعاد تلك القيمة. يجب على المستدعي تحرير المخزن المؤقت المُعاد باستخدام \fBfree\fP(3). .P لا تخصص \fBgetwd\fP() أي ذاكرة باستخدام \fBmalloc\fP(3). يجب أن يكون المعامل \fIbuf\fP مؤشرًا إلى مصفوفة طولها \fBPATH_MAX\fP بايت على الأقل. إذا تجاوز طول اسم المسار المطلق لدليل العمل الحالي، بما في ذلك البايت الختامي الخالي، \fBPATH_MAX\fP بايت، يُرجع NULL، ويُضبط \fIerrno\fP على \fBENAMETOOLONG\fP. (لاحظ أنه في بعض الأنظمة، قد لا يكون \fBPATH_MAX\fP ثابتًا في وقت الترجمة؛ علاوة على ذلك، قد تعتمد قيمته على نظام الملفات، انظر \fBpathconf\fP(3).) لأسباب تتعلق بقابلية النقل والأمان، يُهمل استخدام \fBgetwd\fP(). .SH "قيمة الإرجاع" عند النجاح، ترجع هذه الدوال مؤشرًا إلى سلسلة محارف تحتوي على اسم مسار دليل العمل الحالي. في حالة \fBgetcwd\fP() و \fBgetwd\fP()، هذه هي نفس قيمة \fIbuf\fP. .P عند الفشل، ترجع هذه الدوال NULL، ويُضبط \fIerrno\fP للإشارة إلى الخطأ. محتويات المصفوفة المشار إليها بواسطة \fIbuf\fP غير محددة عند الخطأ. .SH الأخطاء .TP \fBEACCES\fP رُفض الإذن لقراءة أو البحث في مكون من اسم الملف. .TP \fBEFAULT\fP يشير \fIbuf\fP إلى عنوان سيئ. .TP \fBEINVAL\fP المعامل \fIsize\fP هو صفر و \fIbuf\fP ليس مؤشرًا خاليًا. .TP \fBEINVAL\fP \fBgetwd\fP(): \fIbuf\fP هو NULL. .TP \fBENAMETOOLONG\fP \fBgetwd\fP(): حجم سلسلة محارف اسم المسار المطلق المنتهية بقيمة خالية يتجاوز \fBPATH_MAX\fP بايت. .TP \fBENOENT\fP فُصل دليل العمل الحالي. .TP \fBENOMEM\fP نفدت الذاكرة. .TP \fBERANGE\fP المعامل \fIsize\fP أقل من طول اسم المسار المطلق لدليل العمل، بما في ذلك البايت الختامي الخالي. تحتاج إلى تخصيص مصفوفة أكبر والمحاولة مرة أخرى. .SH السمات للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. الواجهة السمة القيمة T{ .na .nh \fBgetcwd\fP(), \fBgetwd\fP() T} سلامة الخيوط MT\-Safe T{ .na .nh \fBget_current_dir_name\fP() T} سلامة الخيوط بيئة آمنة لتعدد الخيوط (MT\-Safe) .TE .SH الإصدارات يترك POSIX.1\-2001 سلوك \fBgetcwd\fP() غير محدد إذا كان \fIbuf\fP هو NULL. .P لا يُعرّف POSIX.1\-2001 أي أخطاء لـ \fBgetwd\fP(). .SH الإصدارات .SS "الاختلافات بين مكتبة C والنواة" .\" commit 3272c544da48f8915a0e34189182aed029bd0f2b في لينكس، يوفر النواة استدعاء نظام \fBgetcwd\fP() والذي ستستخدمه الدوال الموصوفة في هذه الصفحة إن أمكن. يأخذ استدعاء النظام نفس الوسائط مثل دالة المكتبة التي تحمل نفس الاسم، ولكنه مقيد بإرجاع بحد أقصى \fBPATH_MAX\fP بايت. (قبل لينكس 3.12، كان الحد الأقصى لحجم اسم المسار المُعاد هو حجم صفحة النظام. في العديد من البنى، يكون كل من \fBPATH_MAX\fP وحجم صفحة النظام 4096 بايت، ولكن بعض البنى لها حجم صفحة أكبر.) إذا تجاوز طول اسم مسار دليل العمل الحالي هذا الحد، فإن استدعاء النظام يفشل مع الخطأ \fBENAMETOOLONG\fP. في هذه الحالة، تعود دوال المكتبة إلى تنفيذ بديل (أبطأ) يُرجع اسم المسار الكامل. .P .\" commit 8df9d1a4142311c084ffeeacb67cd34d190eff74 بعد تغيير في لينكس 2.6.36، ستُسبق اسم المسار المُعاد من استدعاء النظام \fBgetcwd\fP() بالسلسلة "(unreachable)" إذا لم يكن الدليل الحالي أسفل الدليل الجذر للعملية الحالية (على سبيل المثال، لأن العملية عيّنت جذر نظام ملفات جديد باستخدام \fBchroot\fP(2) دون تغيير دليلها الحالي إلى الجذر الجديد). يمكن أيضًا أن يحدث هذا السلوك بواسطة مستخدم غير مميز عن طريق تغيير الدليل الحالي إلى مساحة وصل أخرى. عند التعامل مع أسماء المسارات من مصادر غير موثوقة، يجب على مستدعي الدوال الموصوفة في هذه الصفحة (قبل glibc 2.27) أو استدعاء النظام الخام \fBgetcwd\fP() النظر في التحقق مما إذا كان اسم المسار المُعاد يبدأ بـ \&'/' أو '(' لتجنب تفسير مسار غير قابل للوصول بشكل خاطئ كاسم مسار نسبي. .SH المعايير .TP \fBgetcwd\fP() POSIX.1\-2008. .TP \fBget_current_dir_name\fP() GNU. .TP \fBgetwd\fP() لا شيء. .SH التاريخ .TP \fBgetcwd\fP() POSIX.1\-2001. .TP \fBgetwd\fP() POSIX.1\-2001، ولكن مُوسوم بـ LEGACY. أُزيل في POSIX.1\-2008. استخدم \fBgetcwd\fP() بدلاً من ذلك. .P تحت لينكس، تستخدم هذه الدوال استدعاء النظام \fBgetcwd\fP() (المتوفر منذ لينكس 2.1.92). في الأنظمة الأقدم، كانت تستعلم عن \fI/proc/self/cwd\fP. إذا كان كل من استدعاء النظام ونظام ملفات proc مفقودين، يُستدعى تنفيذ عام. فقط في هذه الحالة يمكن أن تفشل هذه الاستدعاءات تحت لينكس مع \fBEACCES\fP. .SH ملاحظات غالبًا ما تُستخدم هذه الدوال لحفظ موقع دليل العمل الحالي بهدف العودة إليه لاحقًا. فتح الدليل الحالي (".") واستدعاء \fBfchdir\fP(2) للعودة هو عادةً بديل أسرع وأكثر موثوقية عندما تتوفر واصفات ملفات كافية، خاصة على المنصات غير لينكس. .SH العلل منذ تغيير لينكس 2.6.36 الذي أضاف "(unreachable)" في الظروف الموصوفة أعلاه، فشل تنفيذ glibc لـ \fBgetcwd\fP() في الامتثال لـ POSIX وأعاد اسم مسار نسبي عندما يتطلب عقد API اسم مسار مطلق. مع glibc 2.27 فصاعدًا، تم تصحيح هذا؛ استدعاء \fBgetcwd\fP() من اسم المسار هذا سيؤدي الآن إلى الفشل مع \fBENOENT\fP. .SH "انظر أيضًا" \fBpwd\fP(1)، \fBchdir\fP(2)، \fBfchdir\fP(2)، \fBopen\fP(2)، \fBunlink\fP(2)، \fBfree\fP(3)، \fBmalloc\fP(3) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .