.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1993, David Metcalfe .\" 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 getpwnam 3 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم getpwnam, getpwnam_r, getpwuid, getpwuid_r \- الحصول على مدخل ملف كلمة السر .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP \fB#include \fP .P \fBstruct passwd *getpwnam(const char *\fP\fIname\fP\fB);\fP \fBstruct passwd *getpwuid(uid_t \fP\fIuid\fP\fB);\fP .P \fBint getpwnam_r(\fPsize_t size; \fB const char *restrict \fP\fIname\fP\fB,\fP \fB struct passwd *restrict \fP\fIpwd\fP\fB,\fP \fB char \fP\fIbuf\fP\fB[restrict \fP\fIsize\fP\fB], size_t \fP\fIsize\fP\fB,\fP \fB struct passwd **restrict \fP\fIresult\fP\fB);\fP \fBint getpwuid_r(\fPsize_t size; \fB uid_t \fP\fIuid\fP\fB,\fP \fB struct passwd *restrict \fP\fIpwd\fP\fB,\fP \fB char \fP\fIbuf\fP\fB[restrict \fP\fIsize\fP\fB], size_t \fP\fIsize\fP\fB,\fP \fB struct passwd **restrict \fP\fIresult\fP\fB);\fP .fi .P .RS -4 متطلبات ماكروات اختبار الميزات لـ glibc (انظر \fBfeature_test_macros\fP(7)): .RE .P \fBgetpwnam_r\fP(), \fBgetpwuid_r\fP(): .nf _POSIX_C_SOURCE || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE .fi .SH الوصف ترجع الدالة \fBgetpwnam\fP() مؤشرًا إلى بنية تحتوي على الحقول المفصولة للسجل في قاعدة بيانات كلمة السر (مثل ملف كلمة السر المحلي \fI/etc/passwd\fP وNIS وLDAP) الذي يطابق اسم المستخدم \fIname\fP. .P ترجع الدالة \fBgetpwuid\fP() مؤشرًا إلى بنية تحتوي على الحقول المفصولة للسجل في قاعدة بيانات كلمة السر الذي يطابق معرف المستخدم \fIuid\fP. .P عُرف هيكل \fIpasswd\fP في \fI\fP كالتالي: .P .in +4n .EX struct passwd { char *pw_name; /* اسم المستخدم */ char *pw_passwd; /* كلمة سر المستخدم */ uid_t pw_uid; /* معرف المستخدم */ gid_t pw_gid; /* معرف المجموعة */ char *pw_gecos; /* معلومات المستخدم */ char *pw_dir; /* دليل المنزل */ char *pw_shell; /* برنامج الصدفة */ }; .EE .in .P انظر \fBpasswd\fP(5) لمزيد من المعلومات حول هذه الحقول. .P تحصل الدالتان \fBgetpwnam_r\fP() و\fBgetpwuid_r\fP() على نفس المعلومات مثل \fBgetpwnam\fP() و\fBgetpwuid\fP()، لكن تخزنان بنية \fIpasswd\fP المسترجعة في المساحة المشار إليها بواسطة \fIpwd\fP. تُخزن حقول السلاسل المحارف المشار إليها بواسطة أعضاء بنية \fIpasswd\fP في المخزن المؤقت \fIbuf\fP بحجم \fIsize\fP. يُخزن مؤشر إلى النتيجة (في حالة النجاح) أو NULL (في حالة عدم العثور على مدخل أو حدوث خطأ) في \fI*result\fP. .P الاستدعاء .P .in +4n .EX sysconf(_SC_GETPW_R_SIZE_MAX) .EE .in .P يرجع إما \-1، دون تغيير \fIerrno\fP، أو حجمًا مقترحًا مبدئيًا لـ \fIbuf\fP. (إذا كان هذا الحجم صغيرًا جدًا، يفشل الاستدعاء بـ \fBERANGE\fP، وفي هذه الحالة يمكن للمستدعي (caller) المحاولة مرة أخرى بذاكرة وسيطة أكبر.) .SH "قيمة الإرجاع" ترجع الدالتان \fBgetpwnam\fP() و\fBgetpwuid\fP() مؤشرًا إلى بنية \fIpasswd\fP، أو NULL إذا لم يُعثر على المدخل المطابق أو حدث خطأ. إذا حدث خطأ، يُضبط \fIerrno\fP للإشارة إلى الخطأ. إذا أراد المرء التحقق من \fIerrno\fP بعد الاستدعاء، فيجب ضبطه على الصفر قبل الاستدعاء. .P قد يشير القيمة المرجعة إلى منطقة ثابتة، وقد تُستبدل باستدعاءات لاحقة لـ \fBgetpwent\fP(3) أو \fBgetpwnam\fP() أو \fBgetpwuid\fP(). (لا تمرر المؤشر المرتجع إلى \fBfree\fP(3).) .P عند النجاح، ترجع \fBgetpwnam_r\fP() و\fBgetpwuid_r\fP() صفرًا، وتضبط \fI*result\fP على \fIpwd\fP. إذا لم يُعثر على سجل كلمة سر مطابق، ترجع هاتان الدالتان 0 وتخزنان NULL في \fI*result\fP. في حالة الخطأ، يُرجع رقم خطأ، ويُخزن NULL في \fI*result\fP. .SH الأخطاء .TP \fB0\fP أو \fBENOENT\fP أو \fBESRCH\fP أو \fBEBADF\fP أو \fBEPERM\fP أو ... لم يُعثر على \fIname\fP أو \fIuid\fP المعطى. .TP \fBEINTR\fP اُلتُقطت إشارة؛ انظر \fBsignal\fP(7). .TP \fBEIO\fP خطأ إدخال/إخراج. .TP \fBEMFILE\fP وُصل إلى الحد الأقصى لواصفات الملفات المفتوحة لكل عملية. .TP \fBENFILE\fP وُصل إلى الحد الأقصى لإجمالي عدد الملفات المفتوحة على مستوى النظام. .TP \fBENOMEM\fP .\" not in POSIX .\" This structure is static, allocated 0 or 1 times. No memory leak. (libc45) ذاكرة غير كافية لتخصيص بنية \fIpasswd\fP. .TP \fBERANGE\fP مساحة المخزن المؤقت المقدمة غير كافية. .SH الملفات .TP \fI/etc/passwd\fP ملف قاعدة بيانات كلمات السر المحلية .SH السمات للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر \fBattributes\fP(7). .TS allbox; lb lb lbx l l l. الواجهة السمة القيمة T{ .na .nh \fBgetpwnam\fP() T} سلامة الخيوط T{ .na .nh MT\-Unsafe race:pwnam locale T} T{ .na .nh \fBgetpwuid\fP() T} سلامة الخيوط T{ .na .nh MT\-Unsafe race:pwuid locale T} T{ .na .nh \fBgetpwnam_r\fP(), \fBgetpwuid_r\fP() T} سلامة الخيوط T{ .na .nh المنطقة (locale) آمنة لتعدد المسالك (MT\-Safe) T} .TE .SH الإصدارات لم يُحدد حقل \fIpw_gecos\fP في POSIX، ولكنه موجود في معظم التنفيذات. .SH المعايير POSIX.1\-2008. .SH التاريخ POSIX.1\-2001، SVr4، 4.3BSD. .SH ملاحظات .\" more precisely: .\" AIX 5.1 - gives ESRCH .\" OSF1 4.0g - gives EWOULDBLOCK .\" libc, glibc up to glibc 2.6, Irix 6.5 - give ENOENT .\" since glibc 2.7 - give 0 .\" FreeBSD 4.8, OpenBSD 3.2, NetBSD 1.6 - give EPERM .\" SunOS 5.8 - gives EBADF .\" Tru64 5.1b, HP-UX-11i, SunOS 5.7 - give 0 الصياغة المذكورة أعلاه تحت "القيمة المرجعة" مأخوذة من POSIX.1\-2001. لا تعتبر "غير موجود" خطأ، وبالتالي لا تحدد القيمة التي قد يحملها \fIerrno\fP في هذه الحالة. لكن هذا يجعل من المستحيل التعرف على الأخطاء. قد يجادل المرء بأنه وفقًا لـ POSIX، يجب ترك \fIerrno\fP دون تغيير إذا لم يُعثر على مدخل. تُظهر التجارب على أنظمة شبيهة بيونكس المختلفة أن العديد من القيم المختلفة تظهر في هذه الحالة: 0 وENOENT وEBADF وESRCH وEWOULDBLOCK وEPERM وربما غيرها. .P يحتوي الحقل \fIpw_dir\fP على اسم دليل العمل المبدئي للمستخدم. تستخدم برامج تسجيل الدخول قيمة هذا الحقل لتهيئة متغير البيئة \fBHOME\fP لصدفة تسجيل الدخول. يجب على التطبيق الذي يريد تحديد دليل المستخدم الرئيسي أن يفحص قيمة \fBHOME\fP (بدلاً من القيمة \fIgetpwuid(getuid())\->pw_dir\fP) لأن هذا يسمح للمستخدم بتعديل مفهومه عن "الدليل الرئيسي" أثناء جلسة تسجيل الدخول. لتحديد الدليل الرئيسي (المبدئي) لمستخدم آخر، من الضروري استخدام \fIgetpwnam("username")\->pw_dir\fP أو ما شابه. .SH أمثلة البرنامج أدناه يوضح استخدام \fBgetpwnam_r\fP() لإيجاد اسم المستخدم الكامل ومعرّف المستخدم لاسم المستخدم المُقدَّم كوسيط سطر أوامر. .P .\" SRC BEGIN (getpwnam.c) .EX #include #include #include #include #include #include \& int main(int argc, char *argv[]) { struct passwd pwd; struct passwd *result; char *buf; long bufsize; int s; \& if (argc != 2) { fprintf(stderr, "Usage: %s username\[rs]n", argv[0]); exit(EXIT_FAILURE); } \& bufsize = sysconf(_SC_GETPW_R_SIZE_MAX); if (bufsize == \-1) /* Value was indeterminate */ bufsize = 16384; /* Should be more than enough */ \& buf = malloc(bufsize); if (buf == NULL) { perror("malloc"); exit(EXIT_FAILURE); } \& s = getpwnam_r(argv[1], &pwd, buf, bufsize, &result); if (result == NULL) { if (s == 0) printf("Not found\[rs]n"); else { errno = s; perror("getpwnam_r"); } exit(EXIT_FAILURE); } \& printf("Name: %s; UID: %jd\[rs]n", pwd.pw_gecos, (intmax_t) pwd.pw_uid); exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "انظر أيضًا" \fBendpwent\fP(3), \fBfgetpwent\fP(3), \fBgetgrnam\fP(3), \fBgetpw\fP(3), \fBgetpwent\fP(3), \fBgetspnam\fP(3), \fBputpwent\fP(3), \fBsetpwent\fP(3), \fBpasswd\fP(5) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .