سی میں اوپن سسٹم کال کا استعمال کیسے کریں۔

How Use Open System Call C



سسٹم کالز لینکس ڈسٹری بیوشن میں استعمال ہوتی ہیں تاکہ لینکس OS اور پروگراموں کے اندر دروازہ فراہم کیا جا سکے۔ لینکس آپریٹنگ سسٹم گلیبک لائبریری کا استعمال کرتا ہے تاکہ سی زبان کا استعمال کرتے ہوئے اس میں سسٹم کالز کو سپورٹ کیا جا سکے۔ سسٹم کالز کو استعمال کرنے کے اور بھی بہت سے طریقے ہیں۔ اس آرٹیکل گائیڈ میں ، ہم لینکس سسٹم میں اوپن سسٹم کال پر تبادلہ خیال کریں گے۔ اوپن سسٹم کال کا استعمال راستے میں متعین فائل کو جلدی کھولنے کے لیے کیا گیا ہے۔ یہ ہمیں صارف کی بنائی گئی فائل کے فائل ڈسریکٹر کے بارے میں بتاتا ہے۔ ہم اوبنٹو 20.04 استعمال کر رہے ہیں تاکہ کچھ اوپن سسٹم کال کریں۔

لائبریریاں انسٹال کریں۔

سی زبان کو کچھ اضافی لائبریری پیکجوں کو بطور شرط نصب کرنے کی ضرورت ہے۔ سب سے پہلے ، آپ کو سسٹم کالز سے متعلق معلومات کو چیک کرنے کے لیے مین پیجز-دیو پیکج انسٹال کرنے کی ضرورت ہے۔ سرگرمی کے علاقے سے کمانڈ لائن ٹرمینل کھولیں اور مین پیجز انسٹال کرنے کے لیے نیچے دی گئی ہدایات پر عمل کریں۔







$ sudo apt انسٹال مین پیجز۔-دیو



تنصیب کی تکمیل کا آؤٹ پٹ نیچے دیا گیا ہے۔







اب ہم ذیل میں مین کمانڈ کا استعمال کرتے ہوئے اوپن سسٹم کال کی جانچ کریں گے۔

$ آدمیکھلا



اوپن سسٹم کال کے لیے آؤٹ پٹ مین پیج نیچے دکھایا گیا ہے۔ آپ اس سے متعلق اضافی معلومات دیکھ سکتے ہیں۔ باہر نکلنے کے لیے q بٹن دبائیں۔

مندرجہ بالا نحو سسٹم کالز کے لیے ضروری لائبریریوں کی پہلی تین لائنیں دکھاتا ہے۔ اوپن سسٹم کال کے لیے تین نحو دستیاب ہیں۔ پہلا نحو راستے کا نام دکھاتا ہے ، جو کھولی جانے والی فائل کا نام ہے۔ دوسرا پیرامیٹر ، جھنڈے ، فائل کا موڈ دکھاتا ہے ، جیسے پڑھنا یا لکھنا۔ دوسرا نحو اس وقت استعمال کیا جا سکتا ہے جب فائل موجود نہ ہو۔ پیرامیٹر موڈ فائل پر مراعات دکھانے کے لیے استعمال ہوتا ہے۔

اب وقت آگیا ہے کہ اوبنٹو 20.04 لینکس ڈسٹری بیوشن میں سی کوڈ کو ڈیبگ کرنے کے لیے جی سی سی کمپائلر انسٹال کریں۔ اس کے لیے ، شیل میں درج ذیل ہدایات پر عمل کریں۔

$ sudo apt gcc انسٹال کریں۔

جی سی سی کمپائلر کو انسٹال کرنا جاری رکھنے کے لیے آپ کو Y کو تھپتھپانے کی ضرورت ہے ، ورنہ انسٹالیشن بند کرنے کے لیے n بٹن دبائیں۔ تو y بٹن دبائیں اور جاری رکھنے کے لیے انٹر دبائیں۔

تکمیل کے لیے آؤٹ پٹ نیچے دکھایا گیا ہے۔

مثال 01۔

آئیے ایک اوپن سسٹم کال کی انتہائی سادہ سی مثال دیکھیں۔ سب سے پہلے ، کمانڈ شیل کھولیں اور سادہ ٹچ کمانڈ کا استعمال کرتے ہوئے ایک نئی ٹیکسٹ فائل test.txt بنائیں:

$چھوناtest.txt

اس میں کچھ ڈیٹا دستی طور پر شامل کریں۔ آپ نیچے دی گئی کیٹ کمانڈ کا استعمال کرتے ہوئے فائل میں ڈیٹا دیکھ سکتے ہیں۔

$کیٹtest.txt

اب شیل میں نانو کمانڈ کا استعمال کرتے ہوئے ایک نئی سی فائل بنائیں ، جیسا کہ ذیل میں دکھایا گیا ہے۔

$نینوnew.c

نیچے GNU نانو فائل کھل جائے گی۔ آپ کو اس میں سی زبان کا کوڈ درج کرنا ہوگا۔ آپ دیکھ سکتے ہیں کہ ہم نے کوڈ کو صحیح طریقے سے چلانے کے لیے ضروری لائبریری پیکجز کو شامل کیا ہے۔ اس کے بعد ، ہم نے اوپن سسٹم کال پر کام کرنے کے لیے مرکزی فنکشن کی وضاحت کی ہے۔ ہم نے دو عدد متغیرات کا اعلان کیا ہے۔ n متغیر بفر ویلیوز کو شمار کرنے کے لیے استعمال کیا جاتا ہے ، اور fd فائل ڈسریکٹر کے لیے استعمال کیا جاتا ہے۔ ہم نے کریکٹر ٹائپ بفر ارے کو 50 سائز والا بف قرار دیا ہے۔ اوپن سسٹم کال کا استعمال فائل test.txt سے مواد پڑھنے اور فائل ڈسریکٹر کو واپس کرنے کے لیے کیا گیا ہے۔ O_RDONLY کو پڑھنے کے مقاصد کے لیے استعمال کیا گیا ہے۔ اگلی لائن بفر سے 10 بائٹس جمع کرنے اور اسے عدد n میں واپس کرنے کے لیے ریڈ سسٹم کال دکھاتی ہے۔ نیز ، رائٹ کمانڈ کا استعمال مواد یا بفر ڈیٹا کو فائل ڈسریکٹر میں لکھنے کے لیے کیا گیا ہے ، جو کہ ہمارے معاملے میں آؤٹ پٹ اسکرین ہے۔ Ctrl+S کا استعمال کرتے ہوئے اس فائل کو محفوظ کریں اور Ctrl+X کمانڈ کا استعمال کرکے اسے بند کریں۔

#شامل کریں
#شامل کریں
#شامل کریں
#شامل کریں

intمرکزی()
{
intn،ایف ڈی؛
چاربف[پچاس]؛
ایف ڈی=کھلا(پرکھ.TXT،O_RDONLY)؛
n=پڑھیں(ایف ڈی،بف، 10۔)؛
لکھیں( ،بف، 10۔)؛

آئیے پہلے جی سی کمانڈ کا استعمال کرتے ہوئے اوپن سسٹم کال کے لیے سی کوڈ مرتب کریں۔

$جی سی سیnew.c

اب وقت آگیا ہے کہ اوپن سسٹم کال کے لیے سی کوڈ کے لیے آؤٹ پٹ چیک کریں۔ آئیے شیل میں نیچے دی گئی a.out کمانڈ استعمال کریں۔ آؤٹ پٹ فائل test.txt کے مواد سے 10 بائٹس دکھاتا ہے۔

$./کو.باہر

اوپن سسٹم کال کا استعمال کرتے ہوئے ایک فائل کے مندرجات کو دوسری فائل میں لکھنے کے لیے ایک اور مثال لیتے ہیں۔ ذیل میں نانو کمانڈ کا استعمال کرتے ہوئے ایک نئی سی فائل بنانے کے لیے۔

$ نینو نیا۔ج

تو اس میں معمولی تبدیلی کے ساتھ ایک ہی کوڈ لیں۔ ہم نے کوڈ میں ایک اور فائل ڈسریکٹر کو fd1 کے طور پر بیان کیا ہے۔ تمام کوڈ ایک جیسا ہے سوائے ایک اضافی لائن کے۔ کوڈ کی دوسری آخری لائن نے O_CREAT اور موڈ کا استعمال کرتے ہوئے ہدف نامی ایک نئی فائل بنانے کے لیے اوپن سسٹم کال کا استعمال کیا ہے ، صرف O_WRONLY کے طور پر لکھیں۔ 0642 اس فائل کو تفویض کردہ مراعات دکھاتا ہے۔ اور فائل ایک نئے فائل ڈسریکٹر کو واپس کر دی گئی ہے۔ اگلی لائن نے بفر میں مواد کے بائٹس کو اس کے فائل ڈسریکٹر کے مطابق لکھنے کا حکم دکھایا ہے۔ فائل کو محفوظ کریں اور اسے بند کریں۔

سی زبان فائل کو ڈیبگ کرنے کے لیے gcc compile کمانڈ پر عمل کریں۔

$ gcc نیا۔ج

سی کوڈ کے آؤٹ پٹ کو ظاہر کرنے کے لیے ، ذیل میں شیل میں a.out ہدایات کو آزمائیں۔ کوئی آؤٹ پٹ نہیں ہے کیونکہ آؤٹ پٹ کو نئے بنائے گئے فائل ٹارگٹ پر ری ڈائریکٹ کر دیا گیا ہے۔

$./کو.باہر

آئیے کیٹ کمانڈ کا استعمال کرتے ہوئے فائل ٹارگٹ کا ڈیٹا چیک کریں۔ آؤٹ پٹ سے پتہ چلتا ہے کہ فائل میں 20 بائٹس ہیں۔

$ cat کا ہدف۔

نتیجہ

مذکورہ ٹیوٹوریل میں ، ہم نے آپ کو سمجھایا کہ جی سی سی کمپائلر کا استعمال کرتے ہوئے سی زبان میں اوپن سسٹم کال استعمال کریں۔ اس گائیڈ میں بیان کردہ مختلف مثالوں کی مدد سے آپ اپنے مطلوبہ پروگرام کو عملی جامہ پہنائیں گے۔