.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 2003, Andries E. Brouwer .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH getgrent_r 3 "14 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم getgrent_r, fgetgrent_r \- الحصول على مدخل ملف المجموعة بشكل قابل لإعادة الدخول .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP .P \fBint getgrent_r(\fPsize_t size; \fB struct group *restrict \fP\fIgbuf\fP\fB,\fP \fB char \fP\fIbuf\fP\fB[restrict \fP\fIsize\fP\fB], size_t \fP\fIsize\fP\fB,\fP \fB struct group **restrict \fP\fIgbufp\fP\fB);\fP \fBint fgetgrent_r(\fPsize_t size; \fB FILE *restrict \fP\fIstream\fP\fB, struct group *restrict \fP\fIgbuf\fP\fB,\fP \fB char \fP\fIbuf\fP\fB[restrict \fP\fIsize\fP\fB], size_t \fP\fIsize\fP\fB,\fP \fB struct group **restrict \fP\fIgbufp\fP\fB);\fP .fi .P .RS -4 متطلبات ماكروات اختبار الميزات لـ glibc (انظر \fBfeature_test_macros\fP(7)): .RE .P \fBgetgrent_r\fP(): .nf _GNU_SOURCE .fi .\" FIXME . The FTM requirements seem inconsistent here. File a glibc bug? .P \fBfgetgrent_r\fP(): .nf منذ glibc 2.19: _DEFAULT_SOURCE في glibc 2.19 وما قبله: _SVID_SOURCE .fi .SH الوصف الدالتان \fBgetgrent_r\fP() و \fBfgetgrent_r\fP() هما النسختان القابلتان لإعادة الدخول من \fBgetgrent\fP(3) و \fBfgetgrent\fP(3). الأولى تقرأ مدخل المجموعة التالي من الدفق المُهيأ بواسطة \fBsetgrent\fP(3). الثانية تقرأ مدخل المجموعة التالي من \fIstream\fP. .P عُرف هيكل \fIgroup\fP في \fI\fP كالتالي: .P .in +4n .EX struct group { char *gr_name; /* اسم المجموعة */ char *gr_passwd; /* كلمة سر المجموعة */ gid_t gr_gid; /* معرف المجموعة */ char **gr_mem; /* مصفوفة منتهية بـ NULL من المؤشرات إلى أسماء أعضاء المجموعة */ }; .EE .in .P لمزيد من المعلومات حول حقول هذا الهيكل، راجع \fBgroup\fP(5). .P الدوال غير القابلة لإعادة الدخول تُرجع مؤشرًا إلى تخزين ثابت، حيث يحتوي هذا التخزين الثابت على مؤشرات إضافية لاسم المجموعة، كلمة السر، والأعضاء. الدوال القابلة لإعادة الدخول الموصوفة هنا تُرجع كل ذلك في مخازن مؤقتة يُوفرها المُستدعي. أولاً هناك المخزن المؤقت \fIgbuf\fP الذي يمكنه حمل \fIstruct\ group\fP. ثم المخزن المؤقت \fIbuf\fP بحجم \fIsize\fP الذي يمكنه حمل سلاسل محارف إضافية. نتيجة هذه الدوال، \fIstruct\ group\fP المقروء من الدفق، تُخزن في المخزن المؤقت المُوفر \fI*gbuf\fP، ويُعاد مؤشر إلى هذا \fIstruct\ group\fP في \fI*gbufp\fP. .SH "قيمة الإرجاع" عند النجاح، تُرجع هذه الدوال 0 ويكون \fI*gbufp\fP مؤشرًا إلى \fIstruct\ group\fP. عند الخطأ، تُرجع هذه الدوال قيمة خطأ ويكون \fI*gbufp\fP NULL. .SH الأخطاء .TP \fBENOENT\fP لا يوجد مزيد من المدخلات. .TP \fBERANGE\fP مساحة المخزن المؤقت (buffer) المزودة غير كافية. حاول ثانية بمخزن أكبر. .SH السمات للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر \fBattributes\fP(7). .TS allbox; lb lb lbx l l l. الواجهة السمة القيمة T{ .na .nh \fBgetgrent_r\fP() T} سلامة الخيوط T{ .na .nh غير آمن للمسارات المتعددة (MT\-Unsafe) سباق:grent locale T} T{ .na .nh \fBfgetgrent_r\fP() T} سلامة الخيوط T{ .na .nh MT\-Safe T} .TE .P في الجدول أعلاه، \fIgrent\fP في \fIrace:grent\fP يُشير إلى أنه إذا استُخدمت أي من الدوال \fBsetgrent\fP(3)، \fBgetgrent\fP(3)، \fBendgrent\fP(3)، أو \fBgetgrent_r\fP() بالتوازي في خيوط مختلفة من برنامج، فقد تحدث سباقات بيانات. .SH الإصدارات أنظمة أخرى تستخدم النموذج الأولي .P .in +4n .EX struct group *getgrent_r(struct group *grp, char buf[.size], int size); .EE .in .P أو، بشكل أفضل، .P .in +4n .EX int getgrent_r(struct group *grp, char buf[.size], int size, FILE **gr_fp); .EE .in .SH المعايير GNU. .SH التاريخ أُنجزت هذه الدوال بأسلوب يشبه نسخة POSIX من دوال مثل \fBgetpwnam_r\fP(3). .SH ملاحظات الدالة \fBgetgrent_r\fP() ليست قابلة لإعادة الدخول حقًا لأنها تشارك موضع القراءة في الدفق مع جميع الخيوط الأخرى. .SH أمثلة .\" SRC BEGIN (getgrent_r.c) .EX #define _GNU_SOURCE #include #include #include #include #define BUFLEN 4096 \& int main(void) { struct group grp; struct group *grpp; char buf[BUFLEN]; int i; \& setgrent(); for (;;) { i = getgrent_r(&grp, buf, sizeof(buf), &grpp); if (i) break; printf("%s (%jd):", grpp\->gr_name, (intmax_t) grpp\->gr_gid); for (size_t j = 0; ; j++) { if (grpp\->gr_mem[j] == NULL) break; printf(" %s", grpp\->gr_mem[j]); } printf("\[rs]n"); } endgrent(); exit(EXIT_SUCCESS); } .EE .\" perhaps add error checking - should use strerror_r .\" #include .\" #include .\" if (i) { .\" if (i == ENOENT) .\" break; .\" printf("getgrent_r: %s", strerror(i)); .\" exit(EXIT_FAILURE); .\" } .\" SRC END .SH "انظر أيضًا" \fBfgetgrent\fP(3), \fBgetgrent\fP(3), \fBgetgrgid\fP(3), \fBgetgrnam\fP(3), \fBputgrent\fP(3), \fBgroup\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 .