.\" -*- coding: UTF-8 -*- .\" Copyright 2014, Theodore Ts'o .\" Copyright 2015, Michael Kerrisk .\" 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 getrandom 2 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم getrandom \- الحصول على سلسلة من البايتات العشوائية .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP .P \fBssize_t getrandom(\fPsize_t size; \fB void \fP\fIbuf\fP\fB[\fP\fIsize\fP\fB], size_t \fP\fIsize\fP\fB, unsigned int \fP\fIflags\fP\fB);\fP .fi .SH الوصف استدعاء النظام \fBgetrandom\fP() يملأ المخزن المؤقت المشار إليه بـ \fIbuf\fP بما يصل إلى \fIsize\fP بايت عشوائي. يمكن استخدام هذه البايتات لتغذية مولدات الأرقام العشوائية في مساحة المستخدم أو لأغراض التشفير. .P مبدئيًا، يسحب \fBgetrandom\fP() الإنتروبيا من مصدر \fIurandom\fP (أي نفس مصدر الجهاز \fI/dev/urandom\fP). يمكن تغيير هذا السلوك عبر وسيط \fIflags\fP. .P إذا يُهيئ مصدر \fIurandom\fP، فإن القراءات التي تصل إلى 256 بايت ستعيد دائمًا عدد البايتات المطلوبة ولن تقاطعها الإشارات. لا تنطبق هذه الضمانات على أحجام المخازن الأكبر. على سبيل المثال، إذا قاطع معالج إشارة الاستدعاء، فقد يعيد مخزنًا ممتلئًا جزئيًا، أو يفشل مع الخطأ \fBEINTR\fP. .P إذا لم يُهيئ مصدر \fIurandom\fP بعد، فسيحظر \fBgetrandom\fP()، ما لم يتم تحديد \fBGRND_NONBLOCK\fP في \fIflags\fP. .P وسيط \fIflags\fP هو قناع بت يمكن أن يحتوي على صفر أو أكثر من القيم التالية مجمعة بـ OR: .TP \fBGRND_RANDOM\fP إذا عُينت هذه البتة، فسيتم سحب البايتات العشوائية من مصدر \fIrandom\fP (أي نفس مصدر الجهاز \fI/dev/random\fP) بدلاً من مصدر \fIurandom\fP. مصدر \fIrandom\fP محدود بناءً على الإنتروبيا التي يمكن الحصول عليها من الضوضاء البيئية. إذا كان عدد البايتات المتاحة في مصدر \fIrandom\fP أقل من المطلوب في \fIsize\fP، يعيد الاستدعاء البايتات العشوائية المتاحة فقط. إذا لم تكن هناك بايتات عشوائية متاحة، يعتمد السلوك على وجود \fBGRND_NONBLOCK\fP في وسيط \fIflags\fP. .TP \fBGRND_NONBLOCK\fP مبدئيًا، عند القراءة من مصدر \fIrandom\fP، يحظر \fBgetrandom\fP() إذا لم تكن هناك بايتات عشوائية متاحة، وعند القراءة من مصدر \fIurandom\fP، يحظر إذا لم يتم تهيئة تجمع الإنتروبيا بعد. إذا تم تعيين العلم \fBGRND_NONBLOCK\fP، فإن \fBgetrandom\fP() لا يحظر في هذه الحالات، بل يعيد فورًا \-1 مع تعيين \fIerrno\fP إلى \fBEAGAIN\fP. .SH "قيمة الإرجاع" عند النجاح، يعيد \fBgetrandom\fP() عدد البايتات التي تم نسخها إلى المخزن المؤقت \fIbuf\fP. قد يكون هذا أقل من عدد البايتات المطلوبة عبر \fIsize\fP إذا تم تحديد \fBGRND_RANDOM\fP في \fIflags\fP وكانت الإنتروبيا غير كافية في مصدر \fIrandom\fP أو إذا قاطع إشارة استدعاء النظام. .P عند الخطأ، تُعاد القيمة \-1، ويُضبط \fIerrno\fP للإشارة إلى الخطأ. .SH الأخطاء .TP \fBEAGAIN\fP الإنتروبيا المطلوبة لم تكن متاحة، وكان \fBgetrandom\fP() سيحظر إذا لم يتم تعيين العلم \fBGRND_NONBLOCK\fP. .TP \fBEFAULT\fP العنوان المشار إليه بـ \fIbuf\fP خارج مساحة العنوان القابلة للوصول. .TP \fBEINTR\fP قاطع معالج إشارة الاستدعاء؛ انظر وصف كيفية معالجة استدعاءات \fBread\fP(2) المقاطعة على الأجهزة "البطيئة" مع وبدون العلم \fBSA_RESTART\fP في صفحة الدليل \fBsignal\fP(7). .TP \fBEINVAL\fP تم تحديد علم غير صالح في \fIflags\fP. .TP \fBENOSYS\fP حددت دالة الغلاف glibc لـ \fBgetrandom\fP() أن النواة الأساسية لا تنفذ استدعاء النظام هذا. .SH المعايير لينكس. .SH التاريخ Linux 3.17, glibc 2.25. .SH ملاحظات للحصول على نظرة عامة ومقارنة للواجهات المختلفة التي يمكن استخدامها للحصول على العشوائية، راجع \fBrandom\fP(7). .P .\" على عكس \fI/dev/random\fP و \fI/dev/urandom\fP، لا يتضمن \fBgetrandom\fP() استخدام أسماء المسارات أو واصفات الملفات. وبالتالي، يمكن أن يكون \fBgetrandom\fP() مفيدًا في الحالات التي يجعل فيها \fBchroot\fP(2) أسماء مسارات \fI/dev\fP غير مرئية، وحيث يغلق تطبيق (مثل خفي أثناء بدء التشغيل) واصف ملف لأحد هذه الملفات الذي فتحته مكتبة. .SS "الحد الأقصى لعدد البايتات المعادة" اعتبارًا من Linux 3.19، تنطبق الحدود التالية: .IP \[bu] 3 عند القراءة من مصدر \fIurandom\fP، يعيد استدعاء واحد لـ \fBgetrandom\fP() حدًا أقصى يبلغ 32Mi\-1 بايت على الأنظمة التي يكون فيها حجم \fIint\fP 32 بت. .IP \[bu] عند القراءة من مصدر \fIrandom\fP، يعيد حدًا أقصى يبلغ 512 بايت. .SS "المقاطعة بواسطة معالج إشارة" عند القراءة من مصدر \fIurandom\fP (لم يتم تعيين \fBGRND_RANDOM\fP)، سيحظر \fBgetrandom\fP() حتى يتم تهيئة تجمع الإنتروبيا (ما لم يتم تحديد العلم \fBGRND_NONBLOCK\fP). إذا تم تقديم طلب لقراءة عدد كبير من البايتات (أكثر من 256)، سيحظر \fBgetrandom\fP() حتى يتم إنشاء تلك البايتات ونقلها من ذاكرة النواة إلى \fIbuf\fP. عند القراءة من مصدر \fIrandom\fP (تم تعيين \fBGRND_RANDOM\fP)، سيحظر \fBgetrandom\fP() حتى تصبح بعض البايتات العشوائية متاحة (ما لم يتم تحديد العلم \fBGRND_NONBLOCK\fP). .P يعتمد السلوك عندما يقاطع معالج إشارة استدعاء لـ \fBgetrandom\fP() محظور أثناء القراءة من مصدر \fIurandom\fP على حالة تهيئة مخزن الإنتروبيا وحجم الطلب \fIsize\fP. إذا لم يتم تهيئة الإنتروبيا بعد، يفشل الاستدعاء مع الخطأ \fBEINTR\fP. إذا تم تهيئة تجمع الإنتروبيا وكان حجم الطلب كبيرًا (\fIsize\fP\ >\ 256)، إما أن ينجح الاستدعاء، معيدًا مخزنًا ممتلئًا جزئيًا، أو يفشل مع الخطأ \fBEINTR\fP. إذا تم تهيئة تجمع الإنتروبيا وكان حجم الطلب صغيرًا (\fIsize\fP\ <=\ 256)، فلن يفشل \fBgetrandom\fP() مع \fBEINTR\fP. بدلاً من ذلك، سيعيد جميع البايتات التي تم طلبها. .P عند القراءة من مصدر \fIrandom\fP، يمكن لمعالج إشارة مقاطعة طلبات الحظر من أي حجم (يفشل الاستدعاء مع الخطأ \fBEINTR\fP). .P استخدام \fBgetrandom\fP() لقراءة مخازن صغيرة (<=\ 256 بايت) من مصدر \fIurandom\fP هو وضع الاستخدام المفضل. .P المعالجة الخاصة للقيم الصغيرة لـ \fIsize\fP صُممت للتوافق مع \fBgetentropy\fP(3) الخاص بـ OpenBSD، والذي تدعمه glibc حاليًا. .P يجب على مستخدم \fBgetrandom\fP() \fIأن\fP يتحقق دائمًا من القيمة المُرجَعة، لتحديد ما إذا حدث خطأ أو تم إرجاع عدد بايتات أقل من المطلوب. في الحالة التي لا يُحدد فيها \fBGRND_RANDOM\fP وكانت \fIsize\fP أقل من أو تساوي 256، لا ينبغي أبدًا أن يحدث إرجاع عدد بايتات أقل من المطلوب، لكن المبرمج الحريص سيتحقق من ذلك على أي حال! .SH العلل .\" FIXME patch proposed https://lkml.org/lkml/2014/11/29/16 اعتبارًا من Linux 3.19، يوجد الخلل التالي: .IP \[bu] 3 اعتمادًا على حمل وحدة المعالجة المركزية، لا يستجيب \fBgetrandom\fP() للمقاطعات قبل قراءة جميع البايتات المطلوبة. .SH "انظر أيضًا" \fBgetentropy\fP(3)، \fBrandom\fP(4)، \fBurandom\fP(4)، \fBrandom\fP(7)، \fBsignal\fP(7) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .