.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1995, James R. Van Zandt .\" 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 getlogin 3 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم getlogin, getlogin_r, cuserid \- الحصول على اسم المستخدم .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP .P \fBchar *getlogin(void);\fP \fBint getlogin_r(\fPsize_t bufsize; \fB char \fP\fIbuf\fP\fB[\fP\fIbufsize\fP\fB], size_t \fP\fIbufsize\fP\fB);\fP .P \fB#include \fP .P \fBchar *cuserid(char *\fP\fIstring\fP\fB);\fP .fi .P .RS -4 متطلبات ماكروات اختبار الميزات لـ glibc (انظر \fBfeature_test_macros\fP(7)): .RE .P \fBgetlogin_r\fP(): .nf .\" Deprecated: _REENTRANT || _POSIX_C_SOURCE >= 199506L .fi .P \fBcuserid\fP(): .nf منذ glibc 2.24: (_XOPEN_SOURCE && ! (_POSIX_C_SOURCE >= 200112L) || _GNU_SOURCE حتى glibc 2.23: _XOPEN_SOURCE .fi .SH الوصف ترجع \fBgetlogin\fP() مؤشرًا إلى سلسلة محارف تحتوي على اسم المستخدم المسجل الدخول على الطرفية المسيطرة للعملية، أو مؤشرًا فارغًا إذا تعذر تحديد هذه المعلومات. السلسلة مخصصة بشكل ثابت وقد تُستبدل في الاستدعاءات اللاحقة لهذه الدالة أو لدالة \fBcuserid\fP(). .P ترجع \fBgetlogin_r\fP() اسم المستخدم نفسه في المصفوفة \fIbuf\fP ذات الحجم \fIbufsize\fP. .P ترجع \fBcuserid\fP() مؤشرًا إلى سلسلة محارف تحتوي على اسم مستخدم مرتبط بمعرف المستخدم الفعّال للعملية. إذا لم يكن \fIstring\fP مؤشرًا فارغًا، فيجب أن يكون مصفوفة يمكنها استيعاب \fBL_cuserid\fP حرفًا على الأقل؛ تُرجع السلسلة في هذه المصفوفة. وإلا، يُرجع مؤشر إلى سلسلة في منطقة ثابتة. هذه السلسلة مخصصة بشكل ثابت وقد تُستبدل في الاستدعاءات اللاحقة لهذه الدالة أو لدالة \fBgetlogin\fP(). .P الماكرو \fBL_cuserid\fP هو ثابت صحيح يشير إلى طول المصفوفة التي قد تحتاجها لتخزين اسم مستخدم. يُصرّح عن \fBL_cuserid\fP في \fI\fP. .P تسمح هذه الدوال لبرنامجك بتحديد المستخدم الذي يشغّل (\fBcuserid\fP()) أو المستخدم الذي سجل الدخول في هذه الجلسة (\fBgetlogin\fP()). (يمكن أن يختلفا عند تضمين برامج set\-user\-ID.) .P لأغراض معظمها، من الأكثر فائدة استخدام متغير البيئة \fBLOGNAME\fP لمعرفة من هو المستخدم. هذا أكثر مرونة تحديدًا لأن المستخدم يمكنه ضبط \fBLOGNAME\fP بشكل تعسفي. .SH "قيمة الإرجاع" ترجع \fBgetlogin\fP() مؤشرًا إلى اسم المستخدم عند النجاح، وNULL عند الفشل، مع ضبط \fIerrno\fP للإشارة إلى الخطأ. ترجع \fBgetlogin_r\fP() 0 عند النجاح، وقيمة غير صفرية عند الفشل. .SH الأخطاء يحدد POSIX: .TP \fBEMFILE\fP وُصل إلى الحد الأقصى لواصفات الملفات المفتوحة لكل عملية. .TP \fBENFILE\fP وُصل إلى الحد الأقصى لإجمالي عدد الملفات المفتوحة على مستوى النظام. .TP \fBENXIO\fP لا تملك العملية المستدعية طرفية مسيطرة. .TP \fBERANGE\fP (getlogin_r) طول اسم المستخدم، بما في ذلك البايت الفارغ الختامي (\fB\[aq]\[rs]0\[aq]\fP)، أكبر من \fIbufsize\fP. .P لدى Linux/glibc أيضًا: .TP \fBENOENT\fP لم يوجد إدخال مقابل في ملف utmp. .TP \fBENOMEM\fP ذاكرة غير كافية لتخصيص بنية passwd. .TP \fBENOTTY\fP لم يُشر الإدخال المعياري إلى طرفية. (انظر الأخطاء.) .SH الملفات .TP \fI/etc/passwd\fP ملف قاعدة بيانات كلمات السر .TP \fI/var/run/utmp\fP (تقليديًا \fI/etc/utmp\fP؛ استخدمت بعض إصدارات libc \fI/var/adm/utmp\fP) .SH السمات للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر \fBattributes\fP(7). .TS allbox; lb lb lbx l l l. الواجهة السمة القيمة T{ .na .nh \fBgetlogin\fP() T} سلامة الخيوط T{ .na .nh MT\-Unsafe race:getlogin race:utent sig:ALRM timer locale T} T{ .na .nh \fBgetlogin_r\fP() T} سلامة الخيوط T{ .na .nh MT\-Unsafe race:utent sig:ALRM timer locale T} T{ .na .nh \fBcuserid\fP() T} سلامة الخيوط T{ .na .nh MT\-Unsafe race:cuserid/!string locale T} .TE .P في الجدول أعلاه، يشير \fIutent\fP في \fIrace:utent\fP إلى أنه إذا استُخدمت أي من الدوال \fBsetutent\fP(3) أو \fBgetutent\fP(3) أو \fBendutent\fP(3) بالتوازي في خيوط مختلفة من برنامج، فقد تحدث سباقات بيانات. تستدعي \fBgetlogin\fP() و \fBgetlogin_r\fP() تلك الدوال، لذا نستخدم race:utent لتذكير المستخدمين. .SH الإصدارات لدى OpenBSD \fBgetlogin\fP() و \fBsetlogin\fP()، واسم مستخدم مرتبط بجلسة، حتى لو لم يكن لها طرفية تحكم. .SH المعايير .TP \fBgetlogin\fP() .TQ \fBgetlogin_r\fP() POSIX.1\-2008. .TP \fBcuserid\fP() لا شيء. .SH المعايير .TP \fBgetlogin\fP() .TQ \fBgetlogin_r\fP(): POSIX.1\-2001. OpenBSD. .TP \fBcuserid\fP() System V, POSIX.1\-1988. أُزيل في POSIX.1\-1990. SUSv2. أُزيل في POSIX.1\-2001. .IP لدى System V دالة \fBcuserid\fP() تستخدم معرف المستخدم الحقيقي بدلاً من معرف المستخدم الفعّال. .SH العلل لسوء الحظ، غالبًا ما يكون خداع \fBgetlogin\fP() سهلاً. أحيانًا لا تعمل على الإطلاق، لأن بعض البرامج أفسدت ملف utmp. غالبًا، تُعطي فقط أول 8 محارف من اسم الدخول. المستخدم المسجل حاليًا على طرفية التحكم لبرنامجنا ليس بالضرورة المستخدم الذي بدأه. تجنب \fBgetlogin\fP() للأغراض المتعلقة بالأمان. .P لاحظ أن glibc لا تتبع مواصفات POSIX وتستخدم \fIstdin\fP بدلاً من \fI/dev/tty\fP. خطأ. (الأنظمة الحديثة الأخرى، مثل SunOS 5.8 و HP\-UX 11.11 و FreeBSD 4.8، جميعها تُرجع اسم الدخول أيضًا عند إعادة توجيه \fIstdin\fP.) .P لا أحد يعرف بالضبط ما تفعله \fBcuserid\fP()؛ تجنبها في البرامج المحمولة. أو تجنبها تمامًا: استخدم \fIgetpwuid(geteuid())\fP بدلاً من ذلك، إذا كان هذا ما قصدته. \fBلا تستخدم\fP \fBcuserid\fP(). .SH "انظر أيضًا" \fBlogname\fP(1), \fBgeteuid\fP(2), \fBgetuid\fP(2), \fButmp\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 .