2012-02-19 5 views
15

मुझे एक साक्षात्कारकर्ता से पूछा गया था कि मैं tail (हाँ, लिनक्स खोल में से एक को कैसे लागू करूं)। मेरा जवाब था, सबसे पहले फ़ाइल के अंत की तलाश करें, फिर \n से मुकाबला करने के लिए अक्षर एक-एक-एक आगे पढ़ें, जिसका मतलब है कि एक पंक्ति नीचे है, ब्ला ब्ला ब्लाह। मुझे लगता है कि मेरा जवाब सही है।'fseek`, `lseek`,` seekg`, `seekp` के बीच क्या अंतर है?

तब मुझे यह समस्या मिली, जिसे मैं tail को लागू करने के लिए उपयोग करना चाहता हूं? मैंने सोचा कि मैं बस seekg (सी ++ चीज़?) का उपयोग कर सकता हूं, लेकिन मुझे बताया गया कि मुझे lseek (लिनक्स सिस्टम कॉल?) का उपयोग करना चाहिए।

तो fseek (एएनएसआई सी चीज?) सहित, मुझे tail को लागू करने के लिए किस का उपयोग करना चाहिए? और क्या उनके बीच कोई बड़ा अंतर है?

+3

बहुत यकीन है कि 'fseek' लिनक्स पर' lseek' के लिए सिर्फ एक रैपर है। –

+0

@JamesMcLaughlin, मुझे उम्मीद है कि। – Alcott

उत्तर

14

C++ IOstreams लाइब्रेरी का उपयोग करते समय seekg का उपयोग करें। seekp यहां कोई उपयोग नहीं है, क्योंकि यह पुट पॉइंटर सेट करता है।

सी stdio पुस्तकालय का उपयोग करते समय fseek का उपयोग करें। कम-स्तर POSIX फ़ाइल वर्णनकर्ता I/O का उपयोग करते समय lseek का उपयोग करें।

विभिन्न खोज कार्यों के बीच अंतर केवल फाइल/स्ट्रीम ऑब्जेक्ट्स की तरह है जिस पर वे काम करते हैं। लिनक्स पर, seekg और fseek शायद lseek के संदर्भ में लागू किए गए हैं।

+0

तो, मैं 'सी' में 'fseek' या 'C++' में' seekg' का उपयोग करके 'पूंछ' सफलतापूर्वक कार्यान्वित कर सकता हूं, है ना? – Alcott

+0

@ एल्कॉट: हाँ। 'seekg'/IOstreams सी ++ "मूल" I/O लाइब्रेरी है, लेकिन stdio तेज़ हो सकता है। आपकी पंसद। –

+0

मैं लिनक्स का उपयोग कर रहा हूं, तो क्या मुझे 'fseek'' पर 'lseek' चुनना है? – Alcott

संबंधित मुद्दे