এটি করার কী কোনও উপায় আছে যাতে প্রোগ্রামগুলি যখন seek()
কোনও নামযুক্ত পাইপে অপারেশন করার চেষ্টা করে তা সফলভাবে ফিরে আসবে (তবে এমন কাজ করুন যে পাইপটি খালি ফাইল ছিল) পরিবর্তে 'অবৈধ সন্ধান' না করে?
আমার প্রতিটি এসকিউএলাইট ডাটাবেসে সঞ্চিত আমার সিস্টেমে লগিংয়ের সর্বশেষ সামান্য বিট রয়েছে, আমার কাছে কোথাও ফাইল নেই। তবে কয়েকটি সমস্যা আছে যা এতে সমস্যা রয়েছে। দুটি নির্দিষ্ট মামলা রয়েছে;
- একটি প্রোগ্রাম একটি লগ ফাইলটিতে লিখতে চায় যা syslog-ng একটি নামক পাইপ হিসাবে তৈরি করেছে এবং সেখান থেকে পড়ছে। প্রোগ্রামটি
seek()
কোনও কারণে একটি সঞ্চালন করতে চায় এবং তারপরে ব্যর্থ হয়। - একটি প্রোগ্রাম (যেমন অস্বীকৃতি বা ব্যর্থ2ban) কোনও লগ ফাইল থেকে পড়তে চায় যা syslog-ng একটি নামক পাইপ হিসাবে তৈরি করেছে এবং এতে লিখন করছে। প্রোগ্রামটি এতে একটি সম্পাদন করতে চায়
seek()
এবং ব্যর্থ হয়।
আদর্শভাবে আমি ঠিক এইরকম আচরণ করতে চাই যেমন নাম করা পাইপটি কেবল একটি খালি ফাইল। আমি কোনও কারণ দেখতে পাচ্ছি না কেন কোনও লগ লেখার প্রোগ্রামটির যে কোনও উপায়ে চেষ্টা করা প্রয়োজন, এটি কেবল সংযুক্তির জন্য ফাইলটি খোলার এবং লেখা শুরু করা উচিত। আমি দেখতে পাচ্ছি যে কোনও প্রোগ্রাম পড়ার বিষয়টি কেন চাইবে, যাতে এটি তার শেষ অবস্থান থেকে পুনরায় শুরু করতে পারে এবং তাই আমি এটি ফাইলটি খালি থাকার মতো আচরণ করতে চাই (যেমন এটি কেটে ফেলা হয়েছে)।
সুতরাং এমন কিছু বিকল্প আছে যা নামী পাইপগুলিতে সেট করা যেতে পারে যাতে সেগুলি সেভাবে আচরণ করে? যদি না থাকে তবে এমন কোনও মোড সেট করা যেতে পারে যখন সিসলগ-এনজি এইভাবে আচরণ করার জন্য পাইপটি খুলবে (আমি কোড পরিবর্তন করতে উন্মুক্ত)? নাকি আমি খাঁড়ি আপ?