- unstable 4.31.0-1
| getpwent_r(3) | Library Functions Manual | getpwent_r(3) |
الاسم¶
getpwent_r, fgetpwent_r - الحصول على مدخل ملف كلمات السر بشكل قابل لإعادة الدخول
المكتبة¶
مكتبة سي المعيارية (libc، -lc)
موجز¶
#include <pwd.h>
int getpwent_r(size_t size;
struct passwd *restrict pwbuf,
char buf[restrict size], size_t size,
struct passwd **restrict pwbufp);
int fgetpwent_r(size_t size;
FILE *restrict stream, struct passwd *restrict pwbuf,
char buf[restrict size], size_t size,
struct passwd **restrict pwbufp);
getpwent_r()،
منذ glibc 2.19:
_DEFAULT_SOURCE
glibc 2.19 وما قبله:
_BSD_SOURCE || _SVID_SOURCE
fgetpwent_r()،
منذ glibc 2.19:
_DEFAULT_SOURCE
في glibc 2.19 وما قبله:
_SVID_SOURCE
الوصف¶
الدالتان getpwent_r() و fgetpwent_r() هما النسختان القابلتان لإعادة الدخول من getpwent(3) و fgetpwent(3). الأولى تقرأ مدخل passwd التالي من الدفق المُهيأ بواسطة setpwent(3). الثانية تقرأ مدخل passwd التالي من stream.
عُرف هيكل passwd في <pwd.h> كالتالي:
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; /* برنامج الصدفة */
};
لمزيد من المعلومات حول حقول هذا الهيكل، راجع passwd(5).
الدوال غير القابلة لإعادة الدخول تُرجع مؤشرًا إلى تخزين ثابت، حيث يحتوي هذا التخزين الثابت على مؤشرات أخرى لاسم المستخدم، كلمة السر، حقل gecos، الدليل الرئيسي والصدفة. الدوال القابلة لإعادة الدخول الموصوفة هنا تُرجع كل ذلك في مخازن مؤقتة يقدمها المستدعي. أولاً هناك المخزن المؤقت pwbuf الذي يمكنه حمل struct passwd. ثم المخزن المؤقت buf بحجم size الذي يمكنه حمل سلاسل محارف إضافية. نتيجة هذه الدوال، struct passwd المقروء من الدفق، تُخزن في المخزن المؤقت المُقدم *pwbuf، ويُعاد مؤشر إلى هذا struct passwd في *pwbufp.
قيمة الإرجاع¶
عند النجاح، تُرجع هذه الدوال 0 ويكون *pwbufp مؤشرًا إلى struct passwd. عند الخطأ، تُرجع هذه الدوال قيمة خطأ ويكون *pwbufp NULL.
الأخطاء¶
السمات¶
للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).
| الواجهة | السمة | القيمة |
| getpwent_r() | سلامة الخيوط | غير آمن للمسارات المتعددة (MT-Unsafe) سباق:pwent locale |
| fgetpwent_r() | سلامة الخيوط | MT-Safe |
في الجدول أعلاه، pwent في race:pwent يعني أنه إذا استُخدمت أي من الدوال setpwent()، getpwent()، endpwent()، أو getpwent_r() بالتوازي في خيوط مختلفة من برنامج، فقد تحدث سباقات بيانات.
الإصدارات¶
أنظمة أخرى تستخدم النموذج الأولي
struct passwd * getpwent_r(struct passwd *pwd, char buf[.size], int size);
أو، بشكل أفضل،
int getpwent_r(struct passwd *pwd, char buf[.size], int size,
FILE **pw_fp);
المعايير¶
لا شيء.
التاريخ¶
أُنجزت هذه الدوال بأسلوب يشبه نسخة POSIX من دوال مثل getpwnam_r(3).
ملاحظات¶
الدالة getpwent_r() ليست قابلة لإعادة الدخول حقًا لأنها تشارك موضع القراءة في الدفق مع جميع الخيوط الأخرى.
أمثلة¶
#define _GNU_SOURCE
#include <pwd.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#define BUFLEN 4096
int
main(void)
{
struct passwd pw;
struct passwd *pwp;
char buf[BUFLEN];
int i;
setpwent();
for (;;) {
i = getpwent_r(&pw, buf, sizeof(buf), &pwp);
if (i)
break;
printf("%s (%jd)\tHOME %s\tSHELL %s\n", pwp->pw_name,
(intmax_t) pwp->pw_uid, pwp->pw_dir, pwp->pw_shell);
}
endpwent();
exit(EXIT_SUCCESS);
}
انظر أيضًا¶
fgetpwent(3)، getpw(3)، getpwent(3)، getpwnam(3)، getpwuid(3)، putpwent(3)، passwd(5)
ترجمة¶
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>
هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.
إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.
| 14 فبراير 2026 | صفحات دليل لينكس 6.18 |