الفرق بين المراجعتين ل"Ruby/Kernel/syscall"

من موسوعة حسوب
< Ruby‏ | Kernel
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>syscall‎</code> الخاص بالصنف <code>Kernel</code> في روبي}}</noinclude> تصنيف: Ruby تصن...')
 
سطر 3: سطر 3:
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Kernel]]
 
[[تصنيف: Ruby Kernel]]
يستدعي التابع syscall دالة نظام التشغيل المحددة بواسطة num، ويعيد نتيجة الدالة، أو يطلق <code>SystemCallError</code> في حال الفشل.
+
يستدعي التابع <code>syscall</code> دالة نظام التشغيل المحددة بواسطة الوسيط المعطى <code>num</code>، ويعيد نتيجة الدالة، أو يطلق <code>SystemCallError</code> في حال حدوث فشل.
وسائط الدالة يمكن أن توضع بعد num. يجب أن تكون تلك الوسائط إما كائنات <code>String</code> أو كائنات <code>Integer</code>. يُمرّر كائن <code>String</code> كمؤشر لتسلسل البايتات (byte sequence). يتم تمرير كائن <code>Integer</code> كعدد صحيح، والذي له نفس حجم بتات (bit size) المؤشر. يمكن تمرير حتى تسعة وسائط.
 
الدالة المُحددة بالوسيط num تتعلق بالنظام. في بعض أنظمة Unix، يمكن الحصول على الأعداد من ملف يدعى <code>syscall.h</code>.
 
  
الناتج:
+
وسائط الدالة المُستدعاة يمكن أن توضع بعد <code>num</code>. يجب أن تكون تلك الوسائط إما سلاسل نصية ( <code>String</code>) أو أعدادًا صحيحة ( <code>Integer</code>). يُمرّر كائن <code>String</code> كمؤشر (pointer) لتسلسل البايتات (byte sequence). ويتم تمرير كائن <code>Integer</code> كعدد صحيح له نفس حجم بتات (bit size) المؤشر. الحد الأقصى للوسائط التي يمكن تمريرها هو تسعة.
  
استدعاء <code>syscall</code> في نظام ليس لديه أي طريقة لنظام دوال اعتباطي (arbitrary system function) سيفشل، وسيطلق الخطأ <code>NotImplementedError</code>.
+
الدالة المُحددة بالوسيط <code>num</code> تتعلق بالنظام. في بعض أنظمة Unix، يمكن الحصول على أرقام الدوال من ملف يدعى <code>syscall.h</code>.
ملاحظة: على العموم، <code>syscall</code> غير آمنة وغير محمولة (unportable). لكن الأمر يعود إليك في النهاية. يفضل استخدام المكتبة DL إن كنت تريد برمجة آمنة وأكثر محمولية.
+
 
 +
استدعاء <code>syscall</code> في نظام تشغيل غير مزود بنظام دوال اعتباطي (arbitrary system function) سيفشل، وسيطلق الخطأ <code>NotImplementedError</code>.
 +
 
 +
'''ملاحظة''': على العموم، التابع <code>syscall</code> غير آمن وغير محمول (unportable). لذلك استخدمه بحذر. إن كنت تريد برمجة آمنة وأكثر محمولية، يفضل استخدام المكتبة ‎ (Fiddle) DL .
 
==البنية العامة==
 
==البنية العامة==
 
<syntaxhighlight lang="ruby">syscall(num [, args...])→ integer‎</syntaxhighlight>
 
<syntaxhighlight lang="ruby">syscall(num [, args...])→ integer‎</syntaxhighlight>
 
==المعاملات==
 
==المعاملات==
 
===<code>num‎</code>===
 
===<code>num‎</code>===
 +
رقم الدالة المراد استدعاؤها.
  
 
===<code>args...‎</code>===
 
===<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">syscall 4, 1, "hello\n", 6  # '4' is write(2) on our box‎</syntaxhighlight>الناتج:<syntaxhighlight lang="ruby">hello
 +
</syntaxhighlight>
 
==انظر أيضا==
 
==انظر أيضا==
* التابع <code>[[Ruby/Kernel/sub|sub]]</code>: يكافئ التابع sub التعبير <code>$_.sub( args )</code> ، باستثناء أنه سيتم تحديث <code>$_</code> إذا حدث استبدال. متوفر فقط عند تحديد خيار سطر الأوامر -p/-n.
+
* التابع <code>[[Ruby/Kernel/system|system]]</code>: ينفذ التابع <code>system</code> التعليمة المعطاة في صدفة فرعية (subshell).
* التابع <code>[[Ruby/Kernel/system|system]]</code>: ينفذ التابع system الوسيط command… في صدفة فرعية (subshell).يأخذ command… أحد الأشكال التالية.
 
  
 
==مصادر==
 
==مصادر==
 
*[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‎ في توثيق روبي الرسمي.]

مراجعة 17:15، 23 أكتوبر 2018

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

مصادر