.\" -*- coding: UTF-8 -*- '\" t .\" 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 getgrouplist 3 "21 سبتمبر 2025" "صفحات دليل لينكس 6.18" .SH الاسم getgrouplist \- الحصول على قائمة المجموعات التي ينتمي إليها مستخدم .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP .P \fBint getgrouplist(const char *\fP\fIuser\fP\fB, gid_t \fP\fIgroup\fP\fB,\fP \fB gid_t *\fP\fIgroups\fP\fB, int *\fP\fIngroups\fP\fB);\fP .fi .P .RS -4 متطلبات ماكروات اختبار الميزات لـ glibc (انظر \fBfeature_test_macros\fP(7)): .RE .P \fBgetgrouplist\fP(): .nf منذ glibc 2.19: _DEFAULT_SOURCE glibc 2.19 وما قبله: _BSD_SOURCE .fi .SH الوصف تفحص الدالة \fBgetgrouplist\fP() قاعدة بيانات المجموعات (انظر \fBgroup\fP(5)) للحصول على قائمة المجموعات التي ينتمي إليها \fIuser\fP. يُعاد حتى \fI*ngroups\fP من هذه المجموعات في المصفوفة \fIgroups\fP. .P إذا لم يكن ضمن المجموعات المعرفة لـ \fIuser\fP في قاعدة بيانات المجموعات، فسيُدرج \fIgroup\fP في قائمة المجموعات التي تُرجعها \fBgetgrouplist\fP()؛ يُحدد هذا المعامل عادةً كمعرف المجموعة من سجل كلمة السر لـ \fIuser\fP. .P المعامل \fIngroups\fP هو معامل قيمة\-نتيجة: عند الإرجاع يحتوي دائمًا على عدد المجموعات التي وُجدت لـ \fIuser\fP، بما في ذلك \fIgroup\fP؛ قد تكون هذه القيمة أكبر من عدد المجموعات المخزنة في \fIgroups\fP. .SH "قيمة الإرجاع" إذا كان عدد المجموعات التي \fIuser\fP عضو فيها أقل من أو يساوي \fI*ngroups\fP، فتُعاد القيمة \fI*ngroups\fP. .P إذا كان المستخدم عضوًا في أكثر من \fI*ngroups\fP مجموعة، فتُرجع \fBgetgrouplist\fP() \-1. في هذه الحالة، يمكن استخدام القيمة المُعادة في \fI*ngroups\fP لتغيير حجم المخزن المُمرر إلى استدعاء لاحق لـ \fBgetgrouplist\fP(). .SH السمات للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. الواجهة السمة القيمة T{ .na .nh \fBgetgrouplist\fP() T} سلامة الخيوط المنطقة (locale) آمنة لتعدد المسالك (MT\-Safe) .TE .SH المعايير لا شيء. .SH التاريخ glibc 2.2.4. .SH العلل قبل glibc 2.3.3، يحتوي تنفيذ هذه الدالة على خطأ تجاوز المخزن: تُعيد القائمة الكاملة للمجموعات لـ \fIuser\fP في المصفوفة \fIgroups\fP، حتى عندما يتجاوز عدد المجموعات \fI*ngroups\fP. .SH أمثلة يعرض البرنامج أدناه قائمة المجموعات للمستخدم المُسمى في وسيط سطر الأوامر الأول. يحدد وسيط سطر الأوامر الثاني قيمة \fIngroups\fP التي ستُزود لـ \fBgetgrouplist\fP(). تُظهر جلسة الصدفة التالية أمثلة على استخدام هذا البرنامج: .P .in +4n .EX $\fB ./a.out cecilia 0\fP getgrouplist() returned \-1 ngroups = 3 $\fB ./a.out cecilia 3\fP ngroups = 3 16 (dialout) 33 (video) 100 (users) .EE .in .SS "مصدر البرنامج" .\" SRC BEGIN (getgrouplist.c) \& .EX #include #include #include #include #include \& int main(int argc, char *argv[]) { int ngroups; gid_t *groups; struct group *gr; struct passwd *pw; \& if (argc != 3) { fprintf(stderr, "Usage: %s \[rs]n", argv[0]); exit(EXIT_FAILURE); } \& ngroups = atoi(argv[2]); \& groups = malloc(sizeof(*groups) * ngroups); if (groups == NULL) { perror("malloc"); exit(EXIT_FAILURE); } \& /* Fetch passwd structure (contains first group ID for user). */ \& errno = 0; pw = getpwnam(argv[1]); if (pw == NULL) { if (errno) perror("getpwnam"); else fprintf(stderr, "no such user\[rs]n"); exit(EXIT_FAILURE); } \& /* Retrieve group list. */ \& if (getgrouplist(argv[1], pw\->pw_gid, groups, &ngroups) == \-1) { fprintf(stderr, "getgrouplist() returned \-1\[rs]n"); fprintf(stderr, "ngroups = %d\[rs]n", ngroups); exit(EXIT_FAILURE); } \& /* Display list of retrieved groups, along with group names. */ \& fprintf(stderr, "ngroups = %d\[rs]n", ngroups); for (int j = 0; j < ngroups; j++) { printf("%d", groups[j]); gr = getgrgid(groups[j]); if (gr != NULL) printf(" (%s)", gr\->gr_name); printf("\[rs]n"); } \& exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "انظر أيضًا" \fBgetgroups\fP(2), \fBsetgroups\fP(2), \fBgetgrent\fP(3), \fBgroup_member\fP(3), \fBgroup\fP(5), \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 .