التابع IO.close_on_exec=‎ في روبي

من موسوعة حسوب
< Ruby‏ | IO
مراجعة 08:41، 22 ديسمبر 2018 بواسطة جميل-بيلوني (نقاش | مساهمات) (تدقيق)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

يعين التابع close_on_exec عند استدعائه بالشكل close_on_exec = bool قيمة الراية close-on-exec إلى القيمة bool المنطقية.

تعيّن روبي الرايات close-on-exec لكل واصفات الملفات (file descriptors) افتراضيًا منذ الإصدار 2.0.0. لذلك، لا تحتاج إلى تعيينها بنفسك. أضف إلى ذلك أنَّه قد يؤدي عدم ضبط الراية close-on-exec إلى حدوث تسرب لواصف الملف إن استخدمت مهمة فرعية أخرى التابعين ‎fork()‎ و exec()‎ (عبر التابع system()‎ على سبيل المثال). إن كنت بحاجة إلى توريث واصف الملفات في عملية فرعية (child process)، فاستخدم وسيط التابع spawn()‎ مثل fd=>fd.

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

close_on_exec = bool  true or false

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

تعاد القيمة المنطقية bool بعد ضبطها إلى الراية close-on-exec.

أمثلة

مثال على استخدام التابع close_on_exec:

f = open("/dev/null")
f.close_on_exec = true
system("cat", "/proc/self/fd/#{f.fileno}") # cat: /proc/self/fd/3: No such file or directory
f.closed?                #=> false‎

انظر أيضًا

  • التابع autoclose?‎: يتحقق إن كان واصف الملف الأساسي لمجرى معين سيُغلق تلقائيًا عند الانتهاء منه.
  • التابع close: يغلق مجرى د/خ، ويرسل (flushes) أي كتابات مُعلّقة إلى نظام التشغيل.
  • التابع close_on_exec?‎: يتحقق إن كانت الراية close-on-exec الخاصة بالمجرى الذي استدعي معه مضبوطة إلى القيمة true.

مصادر