التابع syscall
الخاص بالصنف 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).