पर कॉल को पढ़ना मैं fgets
का उपयोग कर टेक्स्ट की काफी बड़ी लाइनें (128K तक) पढ़ रहा हूं। मैं सर्वर पर स्विच करने से अत्यधिक संदर्भ दिखाई दे रही है, तो निम्न strace
मैं देख रहा हूँ का उपयोग कर:fgets समस्या को लंबे समय तक पढ़ना() लिनक्स
read(3, "9005 10218 00840023102015 201008"..., 4096) = 4096
अर्थात fgets
एक समय में 4096 बाइट्स का हिस्सा पढ़ता है। read()
पर कॉल करते समय कितने बड़े भाग fgets
का उपयोग करने के लिए कोई तरीका है?
मुझे उदाहरण चाहिए एक * बड़ा * बफर हालांकि, लेकिन कुछ छोटे हिस्सों में पढ़ना जारी करता है। setvbuf के साथ मुझे बफर का अधिकतम आकार सेट करना होगा और पाठ बफर के आकार में जारी किए जाएंगे (उदाहरण के लिए 128k का बफर, 128k भाग में ऊतक पढ़ते हैं, जो वास्तव में 8192 बाइट्स पढ़ने से भी बदतर करने के लिए बाहर निकलता है , मेरे मामले में) – Anonym