كيفية استخدام Open System Call في C

How Use Open System Call C



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

تثبيت المكتبات

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







sudo apt install manpages-ديف



تم تقديم مخرجات إكمال التثبيت أدناه.







الآن سوف نتحقق من استدعاء النظام المفتوح باستخدام الأمر man على النحو التالي.

رجل دولار2افتح



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

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

حان الوقت الآن لتثبيت مترجم GCC لتصحيح أخطاء كود C في توزيعة Ubuntu 20.04 Linux. لذلك ، قم بتنفيذ التعليمات التالية في الصدفة للقيام بذلك.

sudo apt install gcc

يتطلب منك النقر فوق Y لمواصلة تثبيت برنامج التحويل البرمجي GCC ، وإلا اضغط على الزر n لإغلاق التثبيت. لذا اضغط على الزر y واضغط على Enter للمتابعة.

يتم عرض ناتج الإكمال أدناه.

مثال 01

دعونا نلقي نظرة على مثال بسيط للغاية لاستدعاء نظام مفتوح. أولاً ، افتح غلاف الأمر وأنشئ ملفًا نصيًا جديدًا test.txt باستخدام أمر اللمس البسيط على النحو التالي:

$لمس. اتصال. صلةtest.txt

أضف بعض البيانات إليها يدويًا. يمكنك رؤية البيانات في ملف باستخدام الأمر cat أدناه.

$قطtest.txt

لنقم الآن بإنشاء ملف C جديد باستخدام أمر nano في الغلاف ، كما هو موضح أدناه.

$نانوجديد ج

سيتم فتح ملف GNU nano أدناه. يجب عليك كتابة رمز لغة C أدناه فيه. يمكنك أن ترى أننا أضفنا حزم المكتبة الضرورية لتنفيذ كود C بشكل صحيح. بعد ذلك ، حددنا الوظيفة الرئيسية للعمل على مكالمة نظام مفتوح. لقد أعلنا عن متغيرين عدد صحيح. يتم استخدام المتغير n لحساب قيم المخزن المؤقت ، ويتم استخدام fd لواصف الملف. لقد أعلنا أن صفيف المخزن المؤقت لنوع الحرف هو buf بحجم 50. وقد تم استخدام استدعاء النظام المفتوح لقراءة المحتوى من الملف test.txt وإعادته إلى واصف الملف. تم استخدام O_RDONLY لأغراض القراءة. يعرض السطر التالي استدعاء نظام القراءة لجمع 10 بايت من المخزن المؤقت وإعادته إلى العدد الصحيح n. أيضًا ، تم استخدام أمر الكتابة لكتابة المحتوى أو بيانات المخزن المؤقت في واصف الملف ، وهي شاشة الإخراج في حالتنا الآن. احفظ هذا الملف باستخدام Ctrl + S وأغلقه باستخدام الأمر Ctrl + X.

#يشمل
#يشمل
#يشمل
#يشمل

intالأساسية()
{
intنوفد؛
شاربوف[خمسون]؛
فد=افتح(اختبار.رسالة قصيرةوO_RDONLY)؛
ن=اقرأ(فدوبوفو 10)؛
اكتب(1 وبوفو 10)؛

دعنا نجمع أولاً رمز C لمكالمة نظام مفتوح باستخدام أمر gcc أدناه.

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

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

$./إلى.خارج

لنأخذ مثالاً آخر لكتابة محتويات أحد الملفات في ملف آخر باستخدام استدعاء النظام المفتوح. لإنشاء ملف C جديد باستخدام الأمر nano على النحو التالي.

نانو دولار جديد.ج

لذا خذ نفس الكود مع تغيير طفيف فيه. لقد حددنا واصف ملف آخر في الكود على أنه fd1. كل الكود هو نفسه باستثناء سطر واحد إضافي. استخدم السطر الثاني الأخير من الكود استدعاء النظام المفتوح لإنشاء ملف جديد باسم الهدف باستخدام O_CREAT والوضع ، للكتابة فقط كـ O_WRONLY. يظهر 0642 الامتيازات المعينة لهذا الملف. وأعيد الملف إلى واصف ملف جديد. أظهر السطر التالي أمرًا لكتابة بايتات المحتوى في المخزن المؤقت وفقًا لواصف الملف الخاص به. احفظ الملف ثم اغلقه.

نفّذ أمر التحويل البرمجي gcc لتصحيح ملف لغة سي.

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

لعرض ناتج كود C ، جرب تعليمات a.out في الغلاف على النحو التالي. لا يوجد إخراج لأنه تمت إعادة توجيه الإخراج إلى هدف الملف الذي تم إنشاؤه حديثًا.

$./إلى.خارج

دعنا نتحقق من بيانات هدف الملف باستخدام الأمر cat. يوضح الإخراج أن الملف يحتوي على 20 بايت.

الهدف $ القط

استنتاج

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