Open (system call)
বেশিরভাগ ফাইল সিস্টেমের জন্য, একটি প্রোগ্রাম ওপেন সিস্টেম কল ব্যবহার করে একটি ফাইল সিস্টেমে একটি ফাইল অ্যাক্সেস শুরু করে। এটি ফাইলের (ফাইল বর্ণনাকারী) সাথে সম্পর্কিত সংস্থানগুলি বরাদ্দ করে এবং একটি হ্যান্ডেল প্রদান করে যা প্রক্রিয়াটি সেই ফাইলটি উল্লেখ করতে ব্যবহার করবে। কিছু ক্ষেত্রে খোলা প্রথম প্রবেশাধিকার দ্বারা সঞ্চালিত হয়। একই ফাইল বিভিন্ন প্রক্রিয়া দ্বারা এবং এমনকি একই প্রক্রিয়া দ্বারা একযোগে খোলা যেতে পারে, যার ফলে ফাইল সংগঠন এবং ফাইল সিস্টেমের উপর নির্ভর করে একই ফাইলের জন্য বেশ কয়েকটি ফাইল বর্ণনাকারী তৈরি হয়। ফাইল পয়েন্টার সরানো বা বন্ধ করার মতো বর্ণনাকারীগুলির ক্রিয়াকলাপগুলি স্বাধীন-তারা একই ফাইলের জন্য অন্যান্য বর্ণনাকারীকে প্রভাবিত করে না। ফাইলের ক্রিয়াকলাপ, যেমন একটি লেখা, অন্যান্য বর্ণনাকারীর ক্রিয়াকলাপ দ্বারা দেখা যেতে পারেঃ একটি পরবর্তী পাঠ নতুন লিখিত তথ্য পড়তে পারে। খোলার সময়, ফাইল সিস্টেমটি বাফারের জন্য মেমরি বরাদ্দ করতে পারে, অথবা এটি প্রথম অপারেশন পর্যন্ত অপেক্ষা করতে পারে। পরম ফাইলের পথ সমাধান করা হয়েছে। এর মধ্যে একটি দূরবর্তী হোস্টের সাথে সংযোগ স্থাপন এবং একটি অপসারণযোগ্য মাধ্যমের প্রয়োজন সম্পর্কে অপারেটরকে অবহিত করা অন্তর্ভুক্ত থাকতে পারে। এর মধ্যে একটি যোগাযোগ যন্ত্রের সূচনা অন্তর্ভুক্ত থাকতে পারে। এই মুহুর্তে হোস্ট বা মিডিয়াম উপলব্ধ না থাকলে একটি ত্রুটি ফিরে আসতে পারে। ফাইল সিস্টেমের মধ্যে অন্তত ডিরেক্টরিটিতে প্রথম প্রবেশাধিকার সঞ্চালিত হয়। পথের উচ্চতর স্তরের উপাদানগুলি (ডিরেক্টরি) অবস্থিত বা অ্যাক্সেস করা না গেলে সাধারণত একটি ত্রুটি ফেরত দেওয়া হবে। একটি ত্রুটি ফেরত দেওয়া হবে যদি ফাইলটি বিদ্যমান বলে আশা করা হয় এবং এটি না থাকে বা যদি ফাইলটি ইতিমধ্যে বিদ্যমান না থাকে এবং এটি করে। যদি ফাইলটির অস্তিত্ব থাকে বলে আশা করা হয় এবং এটি থাকে, তবে ফাইলের অ্যাক্সেস, ফাইল মেটা ডেটা বা অ্যাক্সেস কন্ট্রোল তালিকার মধ্যে অনুমতি ফ্ল্যাগ দ্বারা সীমাবদ্ধ, অনুরোধকৃত ধরণের ক্রিয়াকলাপের বিরুদ্ধে বৈধ। এর জন্য সাধারণত একটি অতিরিক্ত ফাইল সিস্টেম অ্যাক্সেসের প্রয়োজন হয় যদিও কিছু ফাইল সিস্টেমে মেটা-ফ্ল্যাগগুলি ডিরেক্টরি কাঠামোর অংশ হতে পারে। যদি ফাইলটি তৈরি করা হয়, ফাইল সিস্টেম ফাইল সিস্টেমের ক্ষমতার উপর নির্ভর করে ডিফল্ট প্রাথমিক পরিমাণ সঞ্চয় বা একটি নির্দিষ্ট পরিমাণ বরাদ্দ করতে পারে। যদি এটি ব্যর্থ হয় তবে একটি ত্রুটি ফিরে আসবে। নতুন এন্ট্রি সহ ডিরেক্টরি আপডেট করা হতে পারে অথবা ক্লোজ করা না হওয়া পর্যন্ত এটি বিলম্বিত হতে পারে। খোলার সময় অন্যান্য যে ত্রুটিগুলি ঘটতে পারে তার মধ্যে রয়েছে ডিরেক্টরি আপডেট ব্যর্থতা, অননুমোদিত একাধিক সংযোগ, মিডিয়া ব্যর্থতা, যোগাযোগ লিঙ্ক ব্যর্থতা এবং ডিভাইস ব্যর্থতা। ফেরতের মান অবশ্যই সর্বদা পরীক্ষা করা উচিত এবং একটি ত্রুটি নির্দিষ্ট পদক্ষেপ নেওয়া উচিত। অনেক ক্ষেত্রে প্রোগ্রামিং ভাষা-নির্দিষ্ট রান-টাইম লাইব্রেরি ওপেন ফাইলের সাথে সম্পর্কিত রান-টাইম লাইব্রেরি কাঠামো শুরু করা সহ অতিরিক্ত ক্রিয়া সম্পাদন করতে পারে। কোনও ফাইলের আর প্রয়োজন না হলে, প্রোগ্রামটি বন্ধ করে দেওয়া উচিত। এর ফলে রান-টাইম লাইব্রেরি এবং ফাইল সিস্টেম বাফারগুলি ফিজিক্যাল মিডিয়াতে আপডেট করা হবে এবং একচেটিয়া ব্যবহারের প্রয়োজন হলে অন্যান্য প্রক্রিয়াগুলিকে ডেটা অ্যাক্সেস করার অনুমতি দেবে। কিছু রান-টাইম লাইব্রেরি একটি ফাইল বন্ধ করে দিতে পারে যদি প্রোগ্রামটি রান-টাইম প্রস্থান বলে। প্রোগ্রামটি শেষ হয়ে গেলে কিছু ফাইল সিস্টেম প্রয়োজনীয় ক্রিয়াকলাপ সম্পাদন করতে পারে। কার্নেল বা বিদ্যুতের ব্যর্থতার ক্ষেত্রে এগুলির কোনওটিই হওয়ার সম্ভাবনা নেই। এটি ক্ষতিগ্রস্ত ফাইল সিস্টেম কাঠামোর কারণ হতে পারে যার জন্য সুবিধাপ্রাপ্ত এবং দীর্ঘ ফাইল সিস্টেম ইউটিলিটিগুলি চালানোর প্রয়োজন হয় যার সময় পুরো ফাইল সিস্টেমটি অ্যাক্সেসযোগ্য নাও হতে পারে। কল আর্গুমেন্টগুলি খুলুন ফাইলের পথের নাম, ফাইলটিতে অনুরোধ করা অ্যাক্সেসের ধরণ (পড়ুন, লিখুন, সংযুক্ত করুন ইত্যাদি)। ), মোড নামক তৃতীয় আর্গুমেন্ট ব্যবহার করে প্রাথমিক ফাইল অনুমতির জন্য অনুরোধ করা হয়। এই যুক্তি শুধুমাত্র তখনই প্রাসঙ্গিক যখন একটি নতুন ফাইল তৈরি করা হচ্ছে। ফাইলটি ব্যবহার করার পরে, প্রক্রিয়াটি ক্লোজ কল ব্যবহার করে ফাইলটি বন্ধ করা উচিত, যা ফাইলের বর্ণনাকারীকে বন্ধ করে দেয়। কিছু ফাইল সিস্টেমের মধ্যে ফাইলটি প্রকাশের অনুমতি দেওয়ার জন্য একটি স্বভাব অন্তর্ভুক্ত থাকে। কিছু কম্পিউটার ভাষার মধ্যে রয়েছে রান-টাইম লাইব্রেরি যা নির্দিষ্ট ফাইল সিস্টেমের জন্য অতিরিক্ত কার্যকারিতা অন্তর্ভুক্ত করে। খোলা (বা কিছু সহায়ক রুটিন) কী আকার, রেকর্ড আকার, সংযোগের গতির জন্য নির্দিষ্টকরণ অন্তর্ভুক্ত করতে পারে। কিছু উন্মুক্ত রুটিন প্রোগ্রাম কোডের নির্দিষ্টকরণ অন্তর্ভুক্ত করে যা কোনও ত্রুটির ক্ষেত্রে কার্যকর করা হবে। পার্ল ভাষা ওপেন ফাইলহ্যান্ডল গঠন করে, উদাহরণস্বরূপঃ ওপেন (আমার $fh ",>", output.txt "); পার্ল টাইঃঃ ফাইল মডিউলের টাই ফাংশন ব্যবহার করে একটি ফাইলের সাথে একটি অ্যারে সংযুক্ত করতে। টাইঃঃ যেকোনও ডিবিএম _ ফাইল ফাংশন একটি হ্যাশকে একটি ফাইলের সাথে যুক্ত করে। সি লাইব্রেরি পোসিক্স সংজ্ঞা ওপেন কলটি সি ভাষার জন্য পোসিক্স নির্দিষ্টকরণ দ্বারা প্রমিত করা হয়ঃ ইন্ট ওপেন (কনস্ট চার * পাথ, ইন্ট অফল্যাগ,/*, মোড _ টি মোড */); ইন্ট ওপেন্যাট (ইন্ট এফডি, কনস্ট চার * পাথ, ইন্ট অফল্যাগ,); ইন্ট ক্রিয়েট (কনস্ট চার * পাথ, মোড _ টি মোড); ফাইল * ফোপেন (কনস্ট চার * ফাইলের নাম সীমাবদ্ধ করুন, কনস্ট চার * সীমাবদ্ধ মোড); ফেরত দেওয়া মানটি একটি ফাইল বর্ণনাকারী যা একটি প্রক্রিয়া নির্দিষ্ট কাঠামোর একটি রেফারেন্স যা অন্যান্য বিষয়গুলির মধ্যে, একটি অবস্থান নির্দেশক যা নির্দেশ করে যে ফাইলের কোন স্থানটি পরবর্তী ক্রিয়াকলাপ দ্বারা কার্যকর করা হবে। ওপেন-1 ফিরে আসতে পারে যা ত্রুটির বিশদ বিবরণ সহ একটি ব্যর্থতা নির্দেশ করে। ফাইল সিস্টেমটি সমস্ত খোলা ফাইলের একটি গ্লোবাল টেবিলও আপডেট করে যা কোনও প্রক্রিয়া দ্বারা বর্তমানে কোনও ফাইল ব্যবহার করা হচ্ছে কিনা তা নির্ধারণ করতে ব্যবহৃত হয়। পথ খোলার জন্য ফাইলের নাম। এটি ফাইলের পথ নির্ধারণ করে যেখানে, কোন ফাইল সিস্টেমে, ফাইলটি পাওয়া যায় (বা তৈরি করা উচিত)। ওপেন্যাট একটি আপেক্ষিক পথ আশা করে। এই আর্গুমেন্টটি ঐচ্ছিক প্যারামিটারগুলি একত্রিত করে এবং (<fcntl.h> থেকে) এর মধ্যে একটিঃ অপশন প্যারামিটারগুলির মধ্যে রয়েছেঃ লিখিত O _ APEND ডেটা ফাইলের শেষে সংযুক্ত করা হবে। ফাইল অপারেশনগুলি সর্বদা অবস্থান নির্দেশককে ফাইলের শেষে সামঞ্জস্য করবে। O _ CREAT ফাইলটি তৈরি করুন যদি এটি বিদ্যমান না থাকে; অন্যথায় খোলা ত্রুটি ENOENT সেটিং করতে ব্যর্থ হয়। O _ EXCL O _ CREAT এর সাথে ব্যবহৃত হয় যদি ফাইলটি ইতিমধ্যে বিদ্যমান থাকে, তবে ব্যর্থ হয়, EERRNO কে EEXIST এ সেট করে। O _ TRUNC যদি ফাইলটি ইতিমধ্যে বিদ্যমান থাকে তবে এর আগের বিষয়বস্তুগুলি ফেলে দিন, এটিকে একটি খালি ফাইলে কমিয়ে দিন। কোনও যন্ত্র বা নামযুক্ত পাইপের জন্য প্রযোজ্য নয়। অতিরিক্ত পতাকা এবং ত্রুটিগুলি খোলা ডাকে সংজ্ঞায়িত করা হয়। ক্রিয়েট () এইভাবে প্রয়োগ করা হয়ঃ ইন্ট ক্রিয়েট (কনস্ট চার * পাথ, মোড _ টি মোড) {রিটার্ন ওপেন (পাথ, ও WRONLY|O_CREAT |O_TRUNC, মোড);} ফোপেন r, w, a এবং + এর মতো স্ট্রিং ফ্ল্যাগ ব্যবহার করে এবং fgets, fputs এবং fclose এর সাথে ব্যবহৃত একটি ফাইল পয়েন্টার প্রদান করে। মোড ঐচ্ছিক এবং শুধুমাত্র একটি নতুন ফাইল তৈরি করার সময় প্রাসঙ্গিক, ফাইলের অনুমতিগুলি সংজ্ঞায়িত করে। এর মধ্যে রয়েছে মালিক, গোষ্ঠী বা সমস্ত ব্যবহারকারীর দ্বারা ফাইলটি পড়া, লেখা বা সম্পাদন করা। কলিং প্রক্রিয়ার উমাস্ক দ্বারা মোডটি মাস্ক করা হয়ঃ উমাস্কে সেট করা বিটগুলি মোডে সাফ করা হয়। আরও দেখুন ফাইল বর্ণনাকারী-এটি কীভাবে কাজ করে এবং ওপেন নোটস রেফারেন্স সম্পর্কিত অন্যান্য ফাংশন ডাব্লু রিচার্ড স্টিভেনস ইউনিক্স এনভায়রনমেন্টে উন্নত প্রোগ্রামিং এবং সুমিতাভ দাস সি পজিক্স লাইব্রেরি সিস্টেমের ইউনিক্স ধারণা এবং প্রয়োগ উদাহরণস্বরূপ সি কোড সহ নিবন্ধগুলিকে কল করে