التابع syscall‎ الخاص بالصنف Kernel في روبي

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

يستدعي التابع syscall دالة نظام التشغيل المحددة بواسطة المعامل المُمرَّر إليه ويعيد نتيجة هذه الدالة أو يطلق الخطأ SystemCallError في حال فشل استدعائها.

وسائط الدالة المُستدعاة يمكن أن تمريرها إلى التابع بعد تمرير رقم تلك الدالة. يجب أن تكون تلك الوسائط إما سلاسل نصية أو أعدادًا صحيحةً. يُمرّر كائن من النوع String كمؤشر (pointer) لتسلسل البايتات (byte sequence) بينما يمُرَّر كائن من النوع Integer كعدد صحيح له نفس حجم بتات (bit size) المؤشر. الحد الأقصى للوسائط التي يمكن تمريرها هو تسعة.

الدالة المُحددة بالوسيط num تتعلق بنظام التشغيل. في بعض أنظمة يونكس، يمكن الحصول على أرقام الدوال من ملف يدعى syscall.h.

استدعاء syscall في نظام تشغيل غير مزود بنظام دوال اعتباطي (arbitrary system function) سيؤدي إلى الفشل وإطلاق الخطأ NotImplementedError.

ملاحظة: عمومًا، التابع syscall غير آمن وغير محمول (unportable). لذلك استخدمه بحذر. إن كنت تريد برمجة آمنة وأكثر محمولية، يفضل استخدام المكتبة ‎ (Fiddle) DL .

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

syscall(num [, args...]) integer

المعاملات

num‎

رقم الدالة المراد استدعاؤها.

args...‎

الوسائط الممررة إلى الدالة المستدعاة.

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

تعاد نتيجة الدالة ذات الرقم بعد استدعائها وتمرير الوسائط args... إليها.

أمثلة

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

syscall 4, 1, "hello\n", 6   # '4' is write(2) on our box‎

ناتج تنفيذ هذه الشيفرة هو:

hello

انظر أيضا

  • التابع system: ينفذ التعليمة المعطاة في صدفة فرعية (subshell).

مصادر