2010-05-22 9 views
9

O_LARGEFILE ध्वज आवश्यक है यदि मैं जो करना चाहता हूं वह एक बड़ी फ़ाइल (O_WRONLY) लिखना है या एक बड़ी फ़ाइल (O_APPEND | O_WRONLY) में जोड़ना है?क्या O_LARGEFILE को केवल एक बड़ी फ़ाइल लिखने की आवश्यकता है?

एक धागा है कि मैं शीर्षक पढ़ "Cannot write >2gb index file" CLucene-देव मेलिंग सूची पर से, ऐसा लगता है कि O_LARGEFILE बड़ी फ़ाइलों को लिखने के लिए आवश्यकता हो सकती है, लेकिन वह चर्चा में भाग लेने वालों O_RDWR, नहीं O_WRONLY उपयोग कर रहे हैं, इसलिए मैं नहीं कर रहा हूँ ज़रूर।

उत्तर

10

O_LARGEFILE अनुप्रयोगों द्वारा सीधे कभी नहीं किया जाना चाहिए। इसे libc में open के 64-बिट-ऑफसेट-संगत संस्करण द्वारा आंतरिक रूप से उपयोग किया जाना चाहिए, जब यह कर्नेल (लिनक्स, या संभवतया किसी अन्य कर्नेल को इस 64-बिट-ऑफ़सेट-मोड-ए-सेकेंड- वर्ग-नागरिक बकवास)। बस अपने CFLAGS में हमेशा -D_FILE_OFFSET_BITS=64 शामिल करना सुनिश्चित करें और आपको किसी भी चीज़ के बारे में चिंता करने की आवश्यकता नहीं होगी।

+0

क्या आपके पास उस O_LARGEFILE का उपयोग नहीं किया जाना चाहिए? – dmeister

+0

सबसे अच्छा स्रोत यह तथ्य है कि इसके लिए पॉज़िक्स को grepping शून्य परिणाम बदल जाता है। –

+0

तो आपका मतलब है, O_LARGEFILE कैप की तरह कुछ है? यह कुछ कारण होना चाहिए कि यह झंडा क्यों मौजूद है। – kirugan

10

IIRC अगर आप

#define _LARGEFILE_SOURCE 
#define _FILE_OFFSET_BITS 64 

ऐसा करने से पहले अन्य सभी शामिल हैं आप इस ध्वज पारित करने के लिए की जरूरत नहीं है।

additionally see

+5

'_LARGEFILE_SOURCE' की आवश्यकता नहीं है, केवल' _FILE_OFFSET_BITS'। –

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