पर पढ़ने/लिखने की अनुमतियां बदलें मैं एक लिनक्स सी प्रोजेक्ट पर काम कर रहा हूं और मुझे फ़ाइल डिस्क्रिप्टर के साथ काम करने में परेशानी हो रही है।फ़ाइल डिस्क्रिप्टर
मेरे पास एक अनाथ फ़ाइल डिस्क्रिप्टर है (फ़ाइल खुली थी() 'डी फिर अनलिंक()' डी लेकिन एफडी अभी भी अच्छी है) जिसमें केवल-पढ़ने की अनुमति है। मूल बैकिंग फ़ाइल में पूर्ण अनुमतियां थीं (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH के साथ बनाई गई), लेकिन हां फ़ाइल O_WRONLY के साथ खोली गई थी। क्या फ़ाइल डिस्क्रिप्टर को डुप्लिकेट करना और प्रतिलिपि O_RDWR में बदलना संभव है?
psudo-कोड:
//open orphan file
int fd = open(fname, O_WRONLY, ...)
unlink(fname)
//fd is still good, but I can't read from it
//...
//I want to be able to read from orphan file
int fd2 = dup(fd)
//----change fd2 to read/write???----
अग्रिम धन्यवाद! -Andrew
'fcntl (एफडी, एफ_एसईटीएफएल, एफसीएनटीएल (एफडी, एफ_जीईटीएफएल) | ओ_आरडीडब्लूआर)) * * लगता है * जैसे यह बात होगी, मैन पेज को छोड़कर विशेष रूप से यह कहता है कि काम नहीं करेगा। मुझे लगता है कि कुछ कारणों से कर्नेल को "असंभव" की आवश्यकता है? – aschepler
तो यदि आप इसे पढ़ने की योजना बना रहे हैं तो आप इसे क्यूरोली मोड में क्यों खोलते हैं? –
या सही झंडे का उपयोग करके इसे फिर से खोलें। – jweyrich