سی میں رائٹ سسٹم کال کا استعمال کیسے کریں۔

How Use Write System Call C



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

نحو:

#شامل کریں

ssize_tلکھیں(int fd ، const void*buf ، size_t شمار۔)؛

اس اوپر کی نحو میں ، پہلی لائن سسٹم کالز کے لیے لائبریری دکھاتی ہے۔ دوسری لائن پر ، fd کا مطلب ہے فائل ڈسریکٹر جو کہ واقعی ایک نمبر ہے جو کسی عمل کی کھلی فائل کی وضاحت کرتا ہے۔ مطلوبہ الفاظ *buf کا مطلب بفر ہے۔ اس میں کوئی بھی ڈیٹا موجود ہے۔ اگلا شمار ہے۔ یہ بفر سے فائل ڈسریکٹر کو لکھے جانے والے بائٹس کی تعداد ہے۔







ضروریات انسٹال کریں:

کسی بھی C لینگویج کوڈ کو چلانے کے لیے ، آپ کو پہلے لینکس ڈسٹری بیوشن میں کچھ پیکجز انسٹال کرنا ہوں گے۔ اگر آپ رائٹ سسٹم کال کے حوالے سے مزید معلومات دیکھنا چاہتے ہیں تو آپ کو ایسا کرنے کے لیے manpages-dev پیکج انسٹال کرنا ہوگا۔ Ctrl+Alt+T شارٹ کٹ کلید کا استعمال کرتے ہوئے ٹرمینل کھولنے کے لیے۔ اسے کھولنے کے بعد ، مین پیجز کو انسٹال کرنے کے لیے نیچے دی گئی اپٹ انسٹال کمانڈ لکھیں۔



$سودومناسبانسٹال کریںmanpages-dev



مین پیجز انسٹال کرنے میں کچھ وقت لگے گا۔ اس کے مکمل ہونے کا انتظار کریں۔





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



$آدمی لکھیں

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

اب وقت آگیا ہے کہ آپ لینکس سسٹم میں Gcc پیکیج انسٹال کریں تاکہ C زبان میں کام کیا جا سکے۔ اس کے لیے ، شیل کھولیں اور نیچے دی گئی apt install کمانڈ لکھیں جس کے بعد کلیدی لفظ gcc ہے۔

$سودومناسبانسٹال کریں جی سی سی

دریں اثنا ، انسٹالیشن کے دوران ، یہ آپ سے انسٹالیشن کے اس عمل کی تصدیق کرنے کو کہہ سکتا ہے تاکہ y کو جاری رکھیں اور n کو روکیں۔ لہذا ، y کی کو تھپتھپائیں اور انٹر کی کو دبائیں۔

یہ آپ کے سسٹم میں چند منٹ کے اندر اندر انسٹال ہو جائے گا ، اور آؤٹ پٹ کی آخری لائنیں جیسا کہ نیچے سنیپ شاٹ میں دکھایا گیا ہے۔

مثالیں:

آئیے ہمارے لینکس ڈسٹری بیوشن میں رائٹ سسٹم کال کی کچھ مثالیں رکھتے ہیں۔ لہذا ، کمانڈ لائن شیل کھولیں اور اس میں ڈاٹ سی ایکسٹینشن کے ساتھ ایک نئی سی فائل بنائیں۔ آپ کو جلدی سے بنانے اور کھولنے کے لیے نیچے دی گئی نانو کمانڈ استعمال کرنی ہوگی۔ ہم نے اسے new.c کا نام دیا ہے۔

$نینوnew.c

نیچے والی ونڈو کھل جائے گی۔ اب آپ کو اس فائل میں چسپاں کوڈ لکھنا ہوگا۔ اس کوڈ میں ، ہم نے پہلے ایک unistd.h لائبریری شامل کی ہے۔ پھر ہم نے مین فنکشن بنایا ہے ، اور اس فنکشن کے اندر ، ہم نے رائٹ سسٹم کال بنائی ہے۔ اس سسٹم کال میں ، پہلا پیرامیٹر فائل ڈسریکٹر ہے۔ اس صورت میں ، انٹیجر 1 آؤٹ پٹ ڈیوائس اسکرین کی نمائندگی کرتا ہے ، اور یہ فکسڈ ہے۔ تو ہمارا آؤٹ پٹ سکرین پر دکھایا جائے گا۔ دوسرا پیرامیٹر بفر ڈیٹا دکھاتا ہے۔ آپ اس میں کچھ بھی شامل کر سکتے ہیں۔ اور آخری پیرامیٹر بفر پیرامیٹر میں دیے گئے ڈیٹا کی گنتی نمبر دکھاتا ہے۔ جیسا کہ ہم نے گنتی نمبر کے طور پر 5 کا ذکر کیا ہے ، یہ صرف بفر ڈیٹا کے پہلے 5 بائٹس دکھائے گا اور بائیٹس کو نظر انداز کرے گا۔ اس کوڈ کو Ctrl+S شارٹ کٹ کی کا استعمال کرتے ہوئے محفوظ کریں اور Ctrl+X کمانڈ کا استعمال کرتے ہوئے اس فائل سے باہر نکلیں۔

#شامل کریں

انٹ مین۔()

{لکھیں۔(اقصیٰ یاسین۔)؛}

اب ٹرمینل میں ، فائل کے نام کے ساتھ اس نئے بنائے گئے کوڈ کو مرتب کرنے کے لیے نیچے دی گئی gcc کمانڈ کو آزمائیں۔

$جی سی سیnew.c

آئیے اس کوڈ کو چلاتے وقت ڈیفالٹ a.out فائل کا استعمال کرتے ہوئے چیک کریں۔ تو ، رائٹ سسٹم کال کی آؤٹ پٹ چیک کرنے کے لیے نیچے دی گئی a.out کمانڈ کو آزمائیں۔ ہمیں اسے موجودہ ڈائریکٹری سے فائل لینے کے لیے ./ کے ساتھ استعمال کرنا ہوگا۔

$./a.out

آؤٹ پٹ جو آپ دیکھ سکتے ہیں اس نے صرف گنتی نمبر 5 کی وجہ سے لفظ اقصی کو ظاہر کیا ہے۔

آئیے اپنے کوڈ کو تھوڑا سا تبدیل کریں۔ ہم نے گنتی کا نمبر 11 میں تبدیل کر دیا ہے کیونکہ ہمارے بفر ڈیٹا اقصیٰ یاسین میں کل 11 بائٹس ہیں۔ تو اس بار ، آؤٹ پٹ سٹرنگ ڈیٹا اقصیٰ یاسین کے پورے بائٹس دکھائے گا۔ Ctrl+S کا استعمال کرتے ہوئے اس فائل کو محفوظ کریں اور Ctrl+X شارٹ کٹ کلید کا استعمال چھوڑ دیں۔

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

$جی سی سیnew.c

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

$./a.out

آئیے دیکھتے ہیں کہ کوڈ کیسے کام کرتا ہے جب ہم بفر ڈیٹا پر مشتمل بائٹس کی کل تعداد سے زیادہ کاؤنٹ نمبر لیتے ہیں۔ لہذا ، ہم شمار کو 30 کے طور پر استعمال کر رہے ہیں۔ فائل کو محفوظ کریں اور بند کریں۔

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

$جی سی سیnew.c

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

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

gcc ہدایات کے ذریعے کوڈ مرتب کریں۔

$جی سی سیnew.c

آؤٹ کمانڈ کا استعمال کرتے ہوئے بفر ڈیٹا اور لائن بریک سمیت بائٹس کی کل تعداد دکھاتی ہے۔

$./a.out

نتیجہ:

اس ٹیوٹوریل میں ، ہم نے C میں رائٹ سسٹم کال کو استعمال کرنے کے تصور کی وضاحت کی ہے اس آرٹیکل کا استعمال کرتے ہوئے رائٹ سسٹم کال کے خیال کو سمجھنے کے لیے تمام مثالیں آزمائیں۔