التابع 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).