الفرق بين المراجعتين لصفحة: «Ruby/Kernel/syscall»
لا ملخص تعديل |
جميل-بيلوني (نقاش | مساهمات) تدقيق |
||
سطر 3: | سطر 3: | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby Kernel]] | [[تصنيف: Ruby Kernel]] | ||
يستدعي التابع <code>syscall</code> دالة نظام التشغيل المحددة بواسطة | يستدعي التابع <code>syscall</code> دالة نظام التشغيل المحددة بواسطة المعامل المُمرَّر إليه ويعيد نتيجة هذه الدالة أو يطلق الخطأ <code>[[Ruby/SystemCallError|SystemCallError]]</code> في حال فشل استدعائها. | ||
وسائط الدالة المُستدعاة يمكن أن | وسائط الدالة المُستدعاة يمكن أن تمريرها إلى التابع بعد تمرير رقم تلك الدالة. يجب أن تكون تلك الوسائط إما سلاسل نصية أو أعدادًا صحيحةً. يُمرّر كائن من النوع <code>[[Ruby/String|String]]</code> كمؤشر (pointer) لتسلسل البايتات (byte sequence) بينما يمُرَّر كائن من النوع <code>[[Ruby/Integer|Integer]]</code> كعدد صحيح له نفس حجم بتات (bit size) المؤشر. الحد الأقصى للوسائط التي يمكن تمريرها هو '''تسعة'''. | ||
الدالة المُحددة بالوسيط <code>num</code> تتعلق | الدالة المُحددة بالوسيط <code>num</code> تتعلق بنظام التشغيل. في بعض أنظمة يونكس، يمكن الحصول على أرقام الدوال من ملف يدعى <code>syscall.h</code>. | ||
استدعاء <code>syscall</code> في نظام تشغيل غير مزود بنظام دوال اعتباطي (arbitrary system function) | استدعاء <code>syscall</code> في نظام تشغيل غير مزود بنظام دوال اعتباطي (arbitrary system function) سيؤدي إلى الفشل وإطلاق الخطأ <code>[[Ruby/NotImplementedError|NotImplementedError]]</code>. | ||
'''ملاحظة''': | '''ملاحظة''': عمومًا، التابع <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">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>[[Ruby/Kernel/system|system]]</code>: ينفذ التعليمة المعطاة في صدفة فرعية (subshell). | ||
==مصادر== | ==مصادر== | ||
*[http://ruby-doc.org/core-2.5.1/Kernel.html#method-i-syscall قسم | *[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).