الفرق بين المراجعتين لصفحة: «Ruby/Kernel/syscall»

من موسوعة حسوب
< Ruby‏ | Kernel
لا ملخص تعديل
تدقيق
 
سطر 3: سطر 3:
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Kernel]]
[[تصنيف: Ruby Kernel]]
يستدعي التابع <code>syscall</code> دالة نظام التشغيل المحددة بواسطة الوسيط المعطى <code>num</code>، ويعيد نتيجة الدالة، أو يطلق <code>SystemCallError</code> في حال حدوث فشل.
يستدعي التابع <code>syscall</code> دالة نظام التشغيل المحددة بواسطة المعامل المُمرَّر إليه ويعيد نتيجة هذه الدالة أو يطلق الخطأ <code>[[Ruby/SystemCallError|SystemCallError]]</code> في حال فشل استدعائها.


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


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


استدعاء <code>syscall</code> في نظام تشغيل غير مزود بنظام دوال اعتباطي (arbitrary system function) سيفشل، وسيطلق الخطأ <code>NotImplementedError</code>.
استدعاء <code>syscall</code> في نظام تشغيل غير مزود بنظام دوال اعتباطي (arbitrary system function) سيؤدي إلى الفشل وإطلاق الخطأ <code>[[Ruby/NotImplementedError|NotImplementedError]]</code>.


'''ملاحظة''': على العموم، التابع <code>syscall</code> غير آمن وغير محمول (unportable). لذلك استخدمه بحذر. إن كنت تريد برمجة آمنة وأكثر محمولية، يفضل استخدام المكتبة ‎ (Fiddle) DL .
'''ملاحظة''': عمومًا، التابع <code>syscall</code> غير آمن وغير محمول (unportable). لذلك استخدمه بحذر. إن كنت تريد برمجة آمنة وأكثر محمولية، يفضل استخدام المكتبة ‎ (Fiddle) DL .
==البنية العامة==
==البنية العامة==
<syntaxhighlight lang="ruby">syscall(num [, args...])→ integer‎</syntaxhighlight>
<syntaxhighlight lang="ruby">syscall(num [, args...])→ integer‎</syntaxhighlight>
سطر 21: سطر 21:


الوسائط الممررة إلى الدالة المستدعاة.
الوسائط الممررة إلى الدالة المستدعاة.
==القيمة المُعادة==
==القيمة المعادة==
يعيد نتيجة الدالة المستدعاة.
تعاد نتيجة الدالة ذات الرقم بعد استدعائها وتمرير الوسائط <code>args...</code> إليها.


==أمثلة==
==أمثلة==
مثال على استخدام التابع <code>syscall‎</code>:
مثال على استخدام التابع <code>syscall‎</code>:
<syntaxhighlight lang="ruby">syscall 4, 1, "hello\n", 6  # '4' is write(2) on our box‎</syntaxhighlight>الناتج:<syntaxhighlight lang="ruby">hello
<syntaxhighlight lang="ruby">syscall 4, 1, "hello\n", 6  # '4' is write(2) on our box‎</syntaxhighlight>ناتج تنفيذ هذه الشيفرة هو:<syntaxhighlight lang="text">hello
</syntaxhighlight>
</syntaxhighlight>
==انظر أيضا==
==انظر أيضا==
* التابع <code>[[Ruby/Kernel/system|system]]</code>: ينفذ التابع <code>system</code> التعليمة المعطاة في صدفة فرعية (subshell).
* التابع <code>[[Ruby/Kernel/system|system]]</code>: ينفذ التعليمة المعطاة في صدفة فرعية (subshell).


==مصادر==
==مصادر==
*[http://ruby-doc.org/core-2.5.1/Kernel.html#method-i-syscall قسم التابع syscall‎ في الصنف Kernel‎ في توثيق روبي الرسمي.]
*[http://ruby-doc.org/core-2.5.1/Kernel.html#method-i-syscall قسم التابع syscall‎ في الصنف Kernel‎ في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 05:25، 17 نوفمبر 2018

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

مصادر