Open (system call)
زیادہ تر فائل سسٹمز کے لیے، ایک پروگرام اوپن سسٹم کال کا استعمال کرتے ہوئے فائل سسٹم میں فائل تک رسائی کا آغاز کرتا ہے۔ یہ فائل (فائل ڈسکرپٹر) سے وابستہ وسائل مختص کرتا ہے، اور ایک ہینڈل واپس کرتا ہے جسے عمل اس فائل کا حوالہ دینے کے لیے استعمال کرے گا۔ کچھ معاملات میں اوپن پہلی رسائی کے ذریعے انجام دیا جاتا ہے۔ ایک ہی فائل کو بیک وقت کئی عملوں کے ذریعے، اور یہاں تک کہ ایک ہی عمل کے ذریعے بھی کھولا جا سکتا ہے، جس کے نتیجے میں ایک ہی فائل کے لیے کئی فائل ڈسکرپٹر ہوتے ہیں۔ یہ فائل کی تنظیم اور فائل سسٹم پر منحصر ہے۔ ڈسکرپٹر پر آپریشن جیسے فائل پوائنٹر کو منتقل کرنا یا اسے بند کرنا آزاد ہیں۔ وہ اسی فائل کے دوسرے ڈسکرپٹر کو متاثر نہیں کرتے ہیں۔ فائل پر آپریشنز، جیسے کہ رائٹ، کو دوسرے ڈسکرپٹرز پر آپریشنز کے ذریعے دیکھا جا سکتا ہے: بعد میں پڑھا گیا نیا تحریری ڈیٹا پڑھ سکتا ہے۔ اوپن کے دوران، فائل سسٹم بفرز کے لیے میموری مختص کر سکتا ہے، یا یہ پہلے آپریشن تک انتظار کر سکتا ہے۔ مطلق فائل کا راستہ حل ہو گیا ہے۔ اس میں ریموٹ میزبان سے جڑنا اور آپریٹر کو مطلع کرنا شامل ہو سکتا ہے کہ ہٹنے کے قابل میڈیم کی ضرورت ہے۔ اس میں مواصلاتی آلہ کا آغاز شامل ہو سکتا ہے۔ اس موقع پر اگر میزبان یا میڈیم دستیاب نہیں ہے تو ایک غلطی واپس کی جا سکتی ہے۔ فائل سسٹم کے اندر کم از کم ڈائرکٹری تک پہلی رسائی انجام دی جاتی ہے۔ اگر راستے کے اعلی درجے کے اجزاء (ڈائریکٹریز) کا پتہ نہیں لگایا جا سکتا یا ان تک رسائی حاصل نہیں کی جا سکتی تو عام طور پر ایک غلطی واپس کر دی جائے گی۔ اگر فائل کے موجود ہونے کی توقع کی جاتی ہے اور یہ موجود نہیں ہے یا فائل پہلے سے موجود نہیں ہونی چاہیے اور یہ موجود ہے تو ایک غلطی واپس کر دی جائے گی۔ اگر فائل کے موجود ہونے کی توقع کی جاتی ہے اور ایسا ہوتا ہے، تو فائل تک رسائی، جیسا کہ فائل میٹا ڈیٹا یا رسائی کنٹرول لسٹ کے اندر اجازت کے جھنڈوں کے ذریعہ محدود ہے، درخواست کردہ قسم کی کارروائیوں کے خلاف توثیق کی جاتی ہے۔ اس کے لیے عام طور پر ایک اضافی فائل سسٹم تک رسائی کی ضرورت ہوتی ہے حالانکہ کچھ فائل سسٹمز میں میٹا فلیگ ڈائرکٹری ڈھانچے کا حصہ ہو سکتے ہیں۔ اگر فائل بنائی جا رہی ہے، تو فائل سسٹم اسٹوریج کی ڈیفالٹ ابتدائی رقم یا فائل سسٹم کی صلاحیتوں کے لحاظ سے ایک مخصوص رقم مختص کر سکتا ہے۔ اگر یہ ناکام رہتا ہے تو ایک غلطی واپس کردی جائے گی۔ نئی اندراج کے ساتھ ڈائرکٹری کو اپ ڈیٹ کرنا انجام دیا جا سکتا ہے یا بند ہونے تک اس میں تاخیر ہو سکتی ہے۔ کھلنے کے دوران ہونے والی متعدد دیگر غلطیوں میں ڈائرکٹری اپ ڈیٹ کی ناکامی، غیر اجازت شدہ متعدد کنکشن، میڈیا کی ناکامی، مواصلاتی لنک کی ناکامی اور ڈیوائس کی ناکامی شامل ہیں۔ واپسی کی قیمت کا ہمیشہ جائزہ لیا جانا چاہیے اور غلطی کے لیے مخصوص کارروائی کی جانی چاہیے۔ بہت سے معاملات میں پروگرامنگ زبان کے لیے مخصوص رن ٹائم لائبریری کھلنے سے فائل سے متعلق رن ٹائم لائبریری ڈھانچے کو شروع کرنے سمیت اضافی اقدامات کیے جا سکتے ہیں۔ جیسے ہی کسی فائل کی ضرورت نہیں رہے گی، پروگرام کو اسے بند کر دینا چاہیے۔ اس سے رن ٹائم لائبریری اور فائل سسٹم بفرز کو فزیکل میڈیا میں اپ ڈیٹ کیا جائے گا اور اگر خصوصی استعمال کی ضرورت ہو تو دوسرے عمل کو ڈیٹا تک رسائی حاصل کرنے کی اجازت ملے گی۔ کچھ رن ٹائم لائبریریاں کسی فائل کو بند کر سکتی ہیں اگر پروگرام رن ٹائم ایگزٹ کو کال کرتا ہے۔ اگر پروگرام ختم ہو جائے تو کچھ فائل سسٹمز ضروری کارروائیاں انجام دے سکتے ہیں۔ دانا یا بجلی کی ناکامی کی صورت میں ان میں سے کسی کے ہونے کا امکان نہیں ہے۔ یہ فائل سسٹم کے خراب ڈھانچے کا سبب بن سکتا ہے جس کے لیے مراعات یافتہ اور طویل فائل سسٹم کی افادیت کو چلانے کی ضرورت ہوتی ہے جس کے دوران پورا فائل سسٹم ناقابل رسائی ہو سکتا ہے۔ اوپن کال آرگیومنٹس فائل کا پاتھ نام، فائل پر درخواست کردہ رسائی کی قسم (پڑھنا، لکھنا، جوڑنا وغیرہ)۔ )، ابتدائی فائل کی اجازت کی درخواست موڈ نامی تیسری دلیل کا استعمال کرتے ہوئے کی جاتی ہے۔ یہ دلیل صرف اس وقت متعلقہ ہوتی ہے جب ایک نئی فائل بنائی جا رہی ہو۔ فائل کو استعمال کرنے کے بعد، عمل کو کلوز کال کا استعمال کرتے ہوئے فائل کو بند کرنا چاہیے، جس سے فائل کے فائل ڈسکرپٹر کو بند ہونا پڑتا ہے۔ کچھ فائل سسٹمز میں فائل کو جاری کرنے کی اجازت دینے کا طریقہ شامل ہوتا ہے۔ کچھ کمپیوٹر زبانوں میں رن ٹائم لائبریریاں شامل ہیں جن میں مخصوص فائل سسٹمز کے لیے اضافی فعالیت شامل ہوتی ہے۔ کھلے (یا کچھ معاون معمول) میں کلیدی سائز، ریکارڈ سائز، کنکشن کی رفتار کے لیے وضاحتیں شامل ہو سکتی ہیں۔ کچھ کھلے معمولات میں غلطی کی صورت میں عمل میں لائے جانے والے پروگرام کوڈ کی تفصیلات شامل ہیں۔ پرل زبان اوپن فائل ہینڈل، موڈ [، ای ایکس پی آر] سے تشکیل دیتی ہے مثال کے طور پر: اوپن (میرا $fh "،>"، output.txt ") ؛ پرل ٹائی:: فائل ماڈیول کا ٹائی فنکشن بھی استعمال کرتا ہے تاکہ کسی صف کو فائل سے جوڑا جا سکے۔ ٹائی:: اینی ڈی بی ایم _ فائل فنکشن ہیش کو فائل سے جوڑتا ہے۔ سی لائبریری پوزیکس کی تعریف کھلی کال کو سی زبان کے لیے پوزیکس کی تفصیلات کے ذریعے معیاری بنایا گیا ہے: انٹ اوپن (کانسٹ چار * پاتھ، انٹ آفلاگ،/*، موڈ _ ٹی موڈ */) ؛ انٹ اوپنٹ (انٹ ایف ڈی، کانسٹ چار * پاتھ، انٹ آفلاگ،) ؛ انٹ کریئیٹ (کانسٹ چار * پاتھ، موڈ _ ٹی موڈ) ؛ فائل * فوپین (کانسٹ چار * فائل کا نام محدود کریں، کانسٹ چار * محدود موڈ) ؛ واپس کی گئی قیمت ایک فائل ڈسکرپٹر ہے جو ایک عمل کے مخصوص ڈھانچے کا حوالہ ہے جس میں دوسری چیزوں کے علاوہ، ایک پوزیشن پوائنٹر ہے جو اس بات کی نشاندہی کرتا ہے کہ فائل میں کس جگہ پر اگلے آپریشن کے ذریعے عمل کیا جائے گا۔ کھولیں غلطی کی تفصیل کے ساتھ ناکامی کی نشاندہی کرتے ہوئے −1 واپس کر سکتا ہے۔ فائل سسٹم تمام کھلی فائلوں کے گلوبل ٹیبل کو بھی اپ ڈیٹ کرتا ہے جو اس بات کا تعین کرنے کے لیے استعمال ہوتا ہے کہ آیا فی الحال کوئی فائل کسی عمل کے ذریعے استعمال میں ہے یا نہیں۔ کھولی جانے والی فائل کا نام۔ اس میں فائل کا راستہ شامل ہے جس میں یہ وضاحت کی گئی ہے کہ فائل کہاں، کس فائل سسٹم میں پائی جاتی ہے (یا بنائی جانی چاہیے)۔ اوپنٹ ایک رشتہ دار راستے کی توقع کرتا ہے۔ یہ دلیل اختیاری پیرامیٹرز اور (<fcntl.h> سے) ایک ساتھ OR کی طرف سے تشکیل دی گئی ہے: آپشن پیرامیٹرز میں شامل ہیں: O _ APEND لکھا ہوا ڈیٹا فائل کے آخر میں منسلک کیا جائے گا۔ فائل آپریشنز ہمیشہ پوزیشن پوائنٹر کو فائل کے آخر میں ایڈجسٹ کریں گے۔ O _ CREAT فائل بنائیں اگر یہ موجود نہیں ہے ؛ بصورت دیگر اوپن ایرنو کو ENOENT پر ترتیب دینے میں ناکام رہتا ہے۔ O _ EXCL O _ CREAT کے ساتھ استعمال کیا جاتا ہے اگر فائل پہلے سے موجود ہے، تو ناکام ہو جائے، ایرنو کو EEXIST پر سیٹ کریں۔ O _ TRUNC اگر فائل پہلے سے موجود ہے تو اس کے پچھلے مندرجات کو خارج کر دیں، اسے ایک خالی فائل میں کم کر دیں۔ کسی ڈیوائس یا نامی پائپ کے لیے قابل اطلاق نہیں ہے۔ کھلی کال میں اضافی جھنڈوں اور غلطیوں کی وضاحت کی جاتی ہے۔ کریئیٹ () کو اس طرح لاگو کیا جاتا ہے: انٹی کریئیٹ (کانسٹ چار * پاتھ، موڈ _ ٹی موڈ) {ریٹرن اوپن (پاتھ، O _ WRONLY|O_CREAT |O_TRUNC، موڈ) ؛} فوپین آر، ڈبلیو، اے اور + جیسے سٹرنگ فلیگ کا استعمال کرتا ہے اور fgets، fputs اور fclose کے ساتھ استعمال ہونے والا فائل پوائنٹر واپس کرتا ہے۔ موڈ اختیاری اور صرف اس وقت متعلقہ ہوتا ہے جب نئی فائل بنائی جائے، فائل کی اجازتوں کی وضاحت کرتا ہے۔ ان میں مالک، گروپ یا تمام صارفین کی طرف سے فائل کو پڑھنا، لکھنا یا انجام دینا شامل ہے۔ کالنگ کے عمل کے امسک کے ذریعے موڈ کو ماسک کیا جاتا ہے: امسک میں سیٹ کیے گئے بٹس کو موڈ میں صاف کیا جاتا ہے۔ فائل ڈسکرپٹر بھی دیکھیں-یہ کیسے کام کرتا ہے اور اوپن نوٹس حوالہ جات سے متعلق دیگر افعال ڈبلیو رچرڈ اسٹیونز کے ذریعہ یونکس ماحول میں ایڈوانسڈ پروگرامنگ۔ سمیتابھ داس سی پوزیکس لائبریری سسٹم کے ذریعہ یونکس تصور اور ایپلی کیشن مثال کے طور پر سی کوڈ والے مضامین کو کال کرتا ہے۔