التابع Process.setrlimit في روبي

من موسوعة حسوب
< Ruby‏ | Process

يضبط التابع setrlimit قيد المورد (resource limit) للعملية.

اطلع على الدليل man لدالة النظام setrlimit(2)‎ لمزيد من التفاصيل.

البنية العامة

setrlimit(resource, cur_limit, max_limit)  nil click to toggle source
setrlimit(resource, cur_limit)  nil

المعاملات

resource

يشير إلى نوع المورد المراد ضبط قيوده. يُحدَّد برمزٍ مثل CORE:، أو سلسلة نصية مثل "CORE"، أو ثابت مثل Process::RLIMIT_CORE. الموارد المتاحة تتعلق بنظام التشغيل. قد تدعم روبي الموارد التالية:

المورد الوصف
AS الذاكرة الكلية المتاحة بالبايت.

(SUSv3، و NetBSD، و FreeBSD، و OpenBSD باستثناء 4.4BSD-Lite)

CORE حجم النواة بالبايت.

(SUSv3)

CPU زمن المعالجة (CPU time، أو زمن العملية) بالثانية.

(SUSv3)

DATA قطعة البيانات (data segment) بالبايت.

(SUSv3)

FSIZE حجم الملف بالبايت.

(SUSv3)

MEMLOCK الحجم الكلي من أجل mlock(2) بالبايت.

(4.4BSD، و GNU/Linux)

MSGQUEUE الحجم المحجوز من أجل طوابير رسائل POSIX بالبايت.

(GNU/Linux)

NICE عدد يمثِّل الحد الأعلى في قيمة nice(2)‎ للعملية.

(GNU/Linux)

NOFILE عدد يمثِّل واصفات الملفات.

(SUSv3)

NPROC عدد العمليات للمستخدم.

(4.4BSD، و GNU/Linux)

RSS حجم الذاكرة المثبَّتة (resident memory size) بالبايت.

(4.2BSD، و GNU/Linux)

RTPRIO عدد يمثِّل الحد الأعلى للأولوية في الوقت الفعلي (real-time priority) في العملية.

(GNU/Linux)

RTTIME توقيت المعالج (CPU time) من أجل العملية في الوقت الفعلي بالميكروثانية.

(GNU/Linux)

SBSIZE حجم جميع المخازن المؤقتة للمقبس (socket buffers) بالبايت.

(NetBSD، و FreeBSD)

SIGPENDING عدد الإشارات المنتظرة في الطابور المسموحة.

(GNU/Linux)

STACK حجم المكدس بالبايت.

(SUSv3)

cur_limit

يحدِّد هذا المعامل القيد الحالي (الرخو [soft]) المراد ضبطه. يمكن أن تكون قيمة هذا المعامل ‎:INFINITY، أو "INFINITY" أو  Process::RLIM_INFINITY الذي يعني أن المورد ليس محدودًا (غير مقيد). يمكن أن يكون أيضًا Process::RLIM_SAVED_MAX، أو Process::RLIM_SAVED_CUR أو ما مايقابلهما من رموز أو سلاسل نصية.

max_limit

يحدِّد هذا المعامل القيد الأقصى (الصارم [hard]) المراد ضبطه. إن لم يُعطَ هذا المعامل، فستُستعمَل قيمة المعامل cur_limit عوضًا عنه. يمكن أن تكون قيمة هذا المعامل ‎:INFINITY، أو "INFINITY" أو  Process::RLIM_INFINITY الذي يعني أن المورد ليس محدودًا. يمكن أن يكون أيضًا Process::RLIM_SAVED_MAX، أو Process::RLIM_SAVED_CUR أو ما مايقابلهما من رموز أو سلاسل نصية.

القيم المعادة

تعاد القيمة nil بعد اكتمال تنفيذ العملية.

أمثلة

المثال الآتي يرفع قيمة الحد الحالي للعملية الأساسية CORE إلى أقصى حد، وذلك لكي يصبح تفريغ محتويات العملية ممكنًا عند انهيارها:

Process.setrlimit(:CORE, Process.getrlimit(:CORE)[1])

انظر أيضًا

  • التابع getrlimit: يجلب قيد المورد (resource limit) للعملية.
  • التابع setpriority: يضبط قيمة أولوية الجدولة (scheduling priority) لعملية محدَّدة أو لمجموعة مالكة أو مستخدم مالك لعملية.

مصادر