আমরা যদি ব্যবহার করি echo 1234 >> some-fileতবে ডকুমেন্টেশন বলে যে আউটপুট সংযোজন করা হয়েছে।
আমার ধারণাটি হ'ল, যদি কিছু-ফাইল উপস্থিত না থাকে তবে O_CREAT একটি নতুন ফাইল তৈরি করবে। যদি >এটি ব্যবহার করা হয়, তবে O_TRUNC বিদ্যমান ফাইলটি কেটে ফেলবে।
এর ক্ষেত্রে >>: ফাইলটি কি O_WRONLY (বা O_RDWR) হিসাবে খোলা হবে এবং সমাপ্তি এবং লেখার কাজটি সম্পন্ন করার চেষ্টা করা হবে, ও_এপিপিএন্ডের অনুকরণ করে? বা ফাইলটিকে O_APPEND হিসাবে খোলা হবে, এটি কার্নেলের কাছে রেখে নিশ্চিত হয়ে যাবে এডিংটি ঘটবে?
আমি এটি জিজ্ঞাসা করছি কারণ একটি কনজার্ভার প্রক্রিয়া ইকো দ্বারা সন্নিবেশিত কিছু চিহ্নিতকারীকে ওভাররাইট করছে, যখন আউটপুট ফাইলটি এনএফএস মাউন্ট পয়েন্ট থেকে আসে, এবং এনএফএস ডকুমেন্টেশন বলে যে ও_এপিপেন্ড সার্ভারে সমর্থিত নয়, তাই ক্লায়েন্ট কার্নেলটিকে এটি পরিচালনা করতে হবে। আমি অনুমান করি যে কনজার্ভার প্রক্রিয়াটি O_APPEND ব্যবহার করছে তবে >>লিনাক্সে ব্যাশ করা নিশ্চিত নয় , সুতরাং এখানে প্রশ্ন জিজ্ঞাসা করছে।
O_APPENDসমর্থিত নয়; সমস্যা এটি অনুকরণ করা হয়। একটি স্থানীয় ফাইল সিস্টেমে, একই ফাইলটিতে লিখিত বেশ কয়েকটি প্রক্রিয়াO_APPENDকখনও একে অপরের ডেটা ওভাররাইট করে না; এনএফএস-এ,O_APPENDলেখার আগে শেষের সন্ধান করে অনুকরণ করা হয়, যা রেসের অবস্থার সম্ভাবনা ছেড়ে দেয়। এনএফএসে এর আশেপাশে কোনও উপায় নেই; প্রতিটি সমান্তরাল লেখকের নিজস্ব ফাইল লিখতে হবে। এটিকে ঘিরে কাজ করার একমাত্র উপায় হ'ল এনএফএস সার্ভারে একটি সার্ভার প্রক্রিয়া সেটআপ করা, লগারে লগ থাকা|nc server portএবং সার্ভারটিকে লগটিতে আগত ডেটা সংযোজন করা।