لینکس میں سسٹم کال کیا ہے اور یہ مثالوں کے ساتھ کیسے کام کرتی ہے۔

What Is System Call Linux



سسٹم کال ایک فنکشن ہے جو کسی عمل کو لینکس کرنل کے ساتھ بات چیت کرنے کی اجازت دیتا ہے۔ یہ کمپیوٹر پروگرام کے لیے آپریٹنگ سسٹم کے دانا سے سہولت کا آرڈر دینے کا صرف ایک پروگرام ہے۔ سسٹم کالز آپریٹنگ سسٹم کے وسائل کو یو پی آئی (ایپلی کیشن پروگرامنگ انٹرفیس) کے ذریعے صارف کے پروگراموں کے سامنے لاتی ہیں۔ سسٹم کالز صرف دانا فریم ورک تک رسائی حاصل کر سکتی ہیں۔ سسٹم کالز ان تمام خدمات کے لیے درکار ہیں جن کے لیے وسائل درکار ہیں۔

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







ویفر پتلا ریپر:

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



  • کھولیں
  • بند کریں
  • ایگزیک
  • لکھیں۔
  • پڑھیں
  • لیسیک۔
  • منتخب کریں۔

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



اوپن سسٹم کال:

ہم اپنی لینکس ڈسٹری بیوشن میں اوپن سسٹم کال کو تیزی سے دستاویز کھولنے کے لیے استعمال کر سکتے ہیں ، جسے ہم اپنے کوڈ آف سی لینگویج میں بیان کریں گے۔ سب سے پہلے کمانڈ ٹرمینل لانچ کریں۔ آپ شارٹ کٹ Ctrl+Alt+T استعمال کر سکتے ہیں۔ فرض کریں کہ آپ کے پاس ہوم ڈائرکٹری میں ایک ٹیکسٹ فائل test.txt ہے ، اور اس میں کچھ مواد موجود ہے۔ لہذا ، شروع میں ، آپ کو نینو ایڈیٹر کے ذریعے ٹرمینل میں ایک نئی سی قسم فائل نام new.c بنانا ہوگا۔ لہذا ، ذیل میں سادہ نانو ہدایات کو آزمائیں۔





$نینوnew.c

اب ، نینو ایڈیٹر لانچ کیا گیا ہے۔ اس میں نیچے دکھایا گیا کوڈ ٹائپ کریں۔ ہمارے پاس کوڈ میں دو فائل ڈسریکٹر ہیں۔ دونوں فائلوں کو اوپن سسٹم کال کے ذریعے کھولا جا سکتا ہے۔ پہلے ڈسریکٹر میں ریڈ کال ہوتی ہے ، اور دوسرے میں رائٹ فنکشن ہوتا ہے۔ پہلی اوپن کال ٹیکسٹ فائل test.txt کھول رہی ہے اور اس کے مواد کو فائل ڈسریکٹر ایف ڈی میں محفوظ کر رہی ہے۔ دوسری اوپن سسٹم کال ہدف کے نام سے ایک فائل بنا رہی ہے۔ دستاویز کا ہدف ایک fd1 فائل ڈسکریپٹر کو واپس کر دیا گیا ہے۔ تحریری ہدایات بفر میں ڈیٹا کے بائٹس کو نقل کرنے کے لیے استعمال ہوتی ہیں۔ کوڈ کو بچانے کے لیے Ctrl+S کو تھپتھپائیں اور فائل کو چھوڑنے کے لیے شارٹ کٹ Ctrl+X دبائیں۔



اس سی کوڈ کو مرتب کرنے کے لیے gcc compile ہدایات چلائیں۔

$جی سی سیnew.c

آئیے شیل میں سادہ a.out استفسار کا استعمال کرتے ہوئے کوڈ پر عمل کریں:

$./a.out

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

$کیٹہدف

ایگزیک سسٹم کال:

ایک فائل کو چلانے کے لیے ایگزیکٹ سسٹم کال کو بند کیا جا رہا ہے جس پر فی الحال کارروائی ہو رہی ہے۔ سابقہ ​​قابل عمل فائل کو تبدیل کیا جاتا ہے ، اور جب بھی ایگزیکٹو کہا جاتا ہے موجودہ فائل چلائی جاتی ہے۔ ایک ایگزیکٹو سسٹم کال کا استعمال کرتے ہوئے ، ہم یہ فرض کر سکتے ہیں کہ ایسا کرنے سے پرانی دستاویز یا ایپلیکیشن لوپ میں ایک نئے کے ساتھ اوور رائٹ ہو جائے گی۔ نئے سافٹ ویئر کا استعمال پورے عمل کے مواد کو زیر کرنے کے لیے کیا جاتا ہے۔ وہ دستاویز جس کا عنوان بیان میں دیا گیا ہے جب بھی exec () کی درخواست کی جاتی ہے صارف کی معلومات کے سیکشن کے لیے رکھی جاتی ہے جو کہ exec () سسٹم کال () چلاتی ہے۔ تو کمانڈ ٹرمینل کھولیں اور ، نینو ایڈیٹر کا استعمال کرتے ہوئے ، ایک نئی سی ٹائپ فائل بنائیں:

$نینوexp.c

ایڈیٹر اب کھول دیا گیا ہے۔ اس میں سی زبان کا مکمل کوڈ لکھیں۔ اس میں تین اہم لائبریریاں شامل ہیں۔ اس کے بعد ، مرکزی تقریب فوری طور پر شروع کردی گئی ہے۔ پرنٹ اسٹیٹمنٹ سٹرنگ ڈیٹا اور فائل کا پروسیس ID دکھا رہا ہے exp.c. getpid () فنکشن اس مقصد کے لیے استعمال کیا گیا ہے۔ پھر ہمارے پاس ایک کریکٹر ٹائپ سرنی ہے جس میں کچھ اقدار ہیں۔ ایگزیکٹ سسٹم کال کا استعمال فائل کا نام اور اوپر کی ایک صف کو بطور دلیل لینے کے لیے کیا گیا ہے۔ اب فائل hello.c پر کارروائی ہوگی۔ اس کے بعد ، ایک اور پرنٹ بیان اب تک آتا ہے ، لیکن اس پر کبھی عمل نہیں کیا جائے گا۔ اس فائل کو محفوظ کرنے کے لیے Ctrl+S دبائیں۔ باہر نکلنے کے لیے Ctrl+X دبائیں۔

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

$نینوhello.c

اس میں درج ذیل کوڈ لکھیں۔ یہ کوڈ مرکزی تقریب میں دو پرنٹ بیانات پر مشتمل ہے۔ پہلا صرف اس میں دی گئی ایک سٹرنگ پرنٹ کر رہا ہے ، اور دوسرا اس وقت اسٹرنگ کو پرنٹ کر رہا ہے جبکہ فی الحال استعمال شدہ فائل کا پروسیس آئی ڈی لے رہا ہے ، جو کہ hello.c ہے۔

آئیے جی سی سی کا استعمال کرتے ہوئے دونوں فائلوں کو یکے بعد دیگرے مرتب کرتے ہیں۔

$جی سی سیexpo exp exp.c

$جی سی سی– اے ہیلو ہیلو. c

جب ہم exp.c فائل پر عملدرآمد کرتے ہیں ، تو یہ exp.c فائل سے پہلا پرنٹ بیان اور دونوں پرنٹ لائنیں hello.c فائل سے نکالے گی۔

$./میعاد

نتیجہ:

ہم نے لینکس سسٹم کالز کے پورے تصور اور ان کو آپ کے لینکس سسٹم میں کس طرح استعمال کیا جا سکتا ہے اس کی تفصیل دی ہے۔ ہم نے اس تصور کو نافذ کرتے ہوئے اوبنٹو 20.04 استعمال کیا ہے۔