ইউনিক্স সিস্টেমগুলি দ্বারা এবং বড়গুলি বাধ্যতামূলক লকগুলি এড়ায়। কয়েকটি ক্ষেত্রে রয়েছে যে কার্নেলটি ব্যবহারকারী প্রোগ্রাম দ্বারা পরিবর্তনগুলির বিরুদ্ধে একটি ফাইল লক করবে, তবে এটি কেবল অন্য কোনও প্রোগ্রাম দ্বারা লিখিত না হয়ে থাকলে। কোনও ইউনিক্স সিস্টেম কোনও ফাইল লক করবে না কারণ কোনও প্রোগ্রাম এতে লিখছে।
আপনি যদি আপনার স্ক্রিপ্টের একযোগে অন্যান্য দৃষ্টান্তগুলির একে অপরের পায়ের আঙ্গুলগুলিতে না চলতে চান তবে আপনার যেমন একটি স্পষ্টত লকিং প্রক্রিয়া ব্যবহার করা দরকার ।flock
lockfile
আপনি যখন যুক্ত করার জন্য একটি ফাইল খুলেন, যা >>
করে, প্রতিটি প্রোগ্রামের সর্বদা ফাইলের শেষে লেখার নিশ্চয়তা দেওয়া হয়। সুতরাং একাধিক উদাহরণের আউটপুট কখনই একে অপরকে ওভাররাইট করে না, এবং যদি তারা লেখার পালা নেয়, তবে তাদের আউটপুট লেখার মতো একই ক্রমে থাকবে।
খারাপ জিনিসটি ঘটতে পারে তা হ'ল যদি উদাহরণগুলির মধ্যে একটির বিভিন্ন অংশ আউটপুট লিখে এবং সেগুলি একসাথে বেরিয়ে আসার প্রত্যাশা করে। এক নজরে লেখাগুলির লেখার মধ্যে, অন্যান্য দৃষ্টান্তগুলি তাদের নিজস্ব লেখাগুলি সম্পাদন করতে পারে। উদাহরণস্বরূপ, উদাহরণস্বরূপ যদি 1 লিখেন foo
, তবে উদাহরণ 2 লিখবে hello
এবং কেবল তখন উদাহরণ 2 লিখবে bar
, তবে ফাইলটি থাকবে foohellobar
।
write
সিস্টেম কল করার সময় কোনও প্রক্রিয়া কার্যকরভাবে ফাইলটিতে লিখিত হয় writes একটি কলকে write
পারমাণবিক: প্রতিটি কল write
বাইটের ক্রম লিখবে যা অন্য প্রোগ্রামগুলির দ্বারা বাধাগ্রস্ত হবে না। একক কল write
কার্যকরভাবে কী পরিমাণ ডেটা লিখতে পারে তার সীমাবদ্ধতা রয়েছে : বড় আকারের জন্য, কেবলমাত্র ডেটা শুরু করা হয়, এবং অ্যাপ্লিকেশনটিকে write
আবার কল করতে হবে। তদতিরিক্ত, অনেক প্রোগ্রাম বাফারিং সম্পাদন করে: তারা একটি স্মৃতি অঞ্চলে ডেটা সংগ্রহ করে, তারপরে এই তথ্যটি এক অংশে লিখুন। কিছু প্রোগ্রাম সম্পূর্ণ লাইন বা অন্যান্য অর্থবহ পৃথক হওয়ার পরে আউটপুট বাফারটি ফ্লাশ করে। এই জাতীয় প্রোগ্রামগুলির সাহায্যে আপনি পুরো লাইনগুলি নিরবচ্ছিন্ন হওয়ার আশা করতে পারেন, যতক্ষণ না সেগুলি দীর্ঘ হয় না (কয়েক কিলোবাইট পর্যন্ত; এটি ওএসের উপর নির্ভর করে)। প্রোগ্রামটি যদি অর্থবহ দাগগুলিতে ফ্লাশ না হয় তবে কেবল বাফার আকারের উপর ভিত্তি করে আপনি একটি উদাহরণ থেকে 4kB এর মতো দেখতে পাবেন, তারপরে অন্য উদাহরণ থেকে 4 কেবি, তারপরে আবার প্রথম উদাহরণ থেকে আবার 4kB ইত্যাদি।