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

من موسوعة حسوب

يستدعي التابع syscall دالة نظام التشغيل المحددة بواسطة الوسيط المعطى num، ويعيد نتيجة الدالة، أو يطلق SystemCallError في حال حدوث فشل.

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

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

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

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

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

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

المعاملات

num‎

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

args...‎

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

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

يعيد نتيجة الدالة المستدعاة.

أمثلة

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

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

الناتج:

hello

انظر أيضا

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

مصادر