كيفية استخدام نظام كتابة المكالمة في سي

How Use Write System Call C



يعمل استدعاء النظام كبوابة أساسية بين البرامج ونواة نظام التشغيل Linux. على الرغم من أنك ستحتاج بالتأكيد إلى إجراء مكالمة للنظام طوال حياتك المهنية في البرمجة بلغة C ، سواء كنت تهدف إلى إنتاجية استثنائية أو نمط معين من الميزات ، فإن مستودع Glibc أو المكتبات القياسية الأخرى الموجودة في توزيعات Linux الشائعة ستكون كافية للغالبية العظمى من المتطلبات. في هذا الدليل ، سنضع مفهومًا حول استدعاء نظام الكتابة بلغة C.

بناء الجملة:

#يشمل

ssize_tاكتب(int fd ، const باطل*buf ، size_t count)؛

في بناء الجملة أعلاه ، يعرض السطر الأول مكتبة مكالمات النظام. في السطر الثاني ، يرمز fd إلى واصف الملف وهو بالفعل رقم يحدد الملف المفتوح للعملية. الكلمة الرئيسية * buf تعني المخزن المؤقت. هذا يحتوي على أي بيانات فيه. التالي هو العد. إنه عدد البايتات المراد كتابتها إلى واصف ملف من المخزن المؤقت.







تثبيت المتطلبات الأساسية:

لتشغيل أي رمز لغة C ، يجب عليك أولاً تثبيت بعض الحزم في توزيع Linux. إذا كنت تريد الاطلاع على مزيد من المعلومات المتعلقة باستدعاء نظام الكتابة ، فيجب عليك تثبيت حزمة manpages-dev للقيام بذلك. لفتح الجهاز باستخدام مفتاح الاختصار Ctrl + Alt + T. بعد فتحه ، اكتب الأمر apt install أدناه متبوعًا بالكلمة الأساسية manpages-dev لتثبيت manpages.



$سودوملائمتثبيتmanpages- ديف



سيستغرق تثبيت manpages بعض الوقت. انتظر حتى تكتمل.





بعد التثبيت ، يمكنك رؤية المعلومات الإضافية حول استدعاء نظام الكتابة عبر الأمر man أدناه في shell.



$رجل 2 اكتب

فيما يلي صفحة دليل الإخراج لأمر الكتابة. يمكنك قراءة المعلومات عنها. اضغط q لإنهاء الدليل.

حان الوقت الآن لتثبيت حزمة Gcc في نظام Linux للعمل بلغة C. لذلك ، افتح الغلاف واكتب الأمر التالي apt install متبوعًا بالكلمة الأساسية gcc.

$سودوملائمتثبيت مجلس التعاون الخليجي

وفي الوقت نفسه ، أثناء التثبيت ، قد يطلب منك تأكيد إجراء التثبيت هذا بالضغط على y للمتابعة و n لإيقافه. لذلك ، اضغط على مفتاح y واضغط على مفتاح Enter.

سيتم تثبيته في نظامك في غضون بضع دقائق ، وستظهر سطور الإخراج الأخيرة كما هو موضح في اللقطة أدناه.

أمثلة:

دعنا نحصل على بعض الأمثلة لاستدعاء نظام الكتابة في توزيعة Linux الخاصة بنا. لذلك ، افتح غلاف سطر الأوامر وأنشئ ملف C جديدًا بامتداد dot c. يجب عليك استخدام الأمر nano أدناه لإنشائه وفتحه بسرعة. لقد أطلقنا عليها اسمًا باسم new.c.

$نانوجديد ج

سيتم فتح النافذة أدناه. الآن عليك كتابة الكود الملصق في هذا الملف. في هذا الكود ، قمنا بتضمين مكتبة unistd.h أولاً. ثم أنشأنا الوظيفة الرئيسية ، وضمن هذه الوظيفة ، أنشأنا استدعاء نظام الكتابة. في استدعاء النظام هذا ، المعلمة الأولى هي واصف الملف. في هذه الحالة ، يمثل العدد الصحيح 1 شاشة جهاز الإخراج ، وهو ثابت. لذلك سوف يتم عرض مخرجاتنا على الشاشة. تُظهر المعلمة الثانية بيانات المخزن المؤقت. يمكنك إضافة أي شيء إليها. وتظهر المعلمة الأخيرة رقم العد للبيانات الواردة في معلمة المخزن المؤقت. كما ذكرنا 5 كرقم تعداد ، سيظهر فقط أول 5 بايت من بيانات المخزن المؤقت ويتجاهل البايتات المتبقية. احفظ هذا الرمز باستخدام مفتاح الاختصار Ctrl + S واخرج من هذا الملف باستخدام الأمر Ctrl + X.

#يشمل

انت مين()

{اكتب(1, Aqsa Yasin,5)؛}

الآن في المحطة ، جرب الأمر gcc أدناه لتجميع هذا الرمز الذي تم إنشاؤه حديثًا باسم ملف.

$مجلس التعاون الخليجيجديد ج

دعنا نتحقق من هذا الرمز باستخدام ملف a.out الافتراضي الذي تم إنشاؤه في وقت التشغيل. لذلك ، جرب الأمر a.out أدناه للتحقق من إخراج استدعاء نظام الكتابة. علينا استخدامه مع. / لاختيار الملف من الدليل الحالي.

$./أ. خارج

الإخراج الذي يمكنك رؤيته قد عرض فقط كلمة الأقصى بسبب العدد 5.

دعونا نغير الكود الخاص بنا قليلا. لقد قمنا بتغيير رقم العد إلى 11 لأن لدينا ما مجموعه 11 بايت في البيانات المخزنة لدينا الأقصى ياسين. لذلك هذه المرة ، سيُظهر الإخراج كامل بايتات بيانات السلسلة الأقصى ياسين. احفظ هذا الملف باستخدام Ctrl + S واخرج باستخدام مفتاح الاختصار Ctrl + X.

فلنجمع الشفرة المحدثة باستخدام برنامج التحويل البرمجي لدول مجلس التعاون الخليجي المثبت حديثًا لتوزيع Linux. جرب نفس الأمر gcc مع اسم الملف مثل new.c.

$مجلس التعاون الخليجيجديد ج

اعرض الآن إخراج نفس الكود باستخدام الأمر a.out السابق على النحو التالي. يظهر الإخراج السلسلة الكاملة الأقصى ياسين من المخزن المؤقت.

$./أ. خارج

دعونا نرى كيف تعمل الشفرة عندما نأخذ عدد العد أكبر من العدد الإجمالي للبايتات التي تحتويها بيانات المخزن المؤقت. لذلك ، كنا نستخدم العد على أنه 30. احفظ وأغلق الملف.

قم بتجميع نفس الملف المحدث باستخدام أمر gcc على النحو التالي.

$مجلس التعاون الخليجيجديد ج

نفّذ الآن الملف باستخدام الأمر a.out ، وسيُظهر الإخراج بيانات المخزن المؤقت بالإضافة إلى بعض القيم المهملة معه كما هو معروض في إخراج اللقطة أدناه.

يمكنك أيضًا التحقق من العدد الإجمالي للبايتات المكتوبة في الملف باستخدام الكود أدناه في نفس الملف.

قم بتجميع الكود عن طريق تعليمات دول مجلس التعاون الخليجي.

$مجلس التعاون الخليجيجديد ج

يُظهر الإخراج العدد الإجمالي للبايت ، بما في ذلك بيانات المخزن المؤقت وفاصل الأسطر ، باستخدام الأمر a.out.

$./أ. خارج

استنتاج:

في هذا البرنامج التعليمي ، قمنا بتطوير المفهوم لاستخدام استدعاء نظام الكتابة في C. جرب جميع الأمثلة لفهم فكرة استدعاء نظام الكتابة باستخدام هذه المقالة.