2010-08-18 9 views
5

क्या सी ++ में खोले गए फ़ाइल के फ़ाइल डिस्क्रिप्टर तक पहुंचने का कोई तरीका है? तो ...ओपन फाइल के फ़ाइल डिस्क्रिप्टर तक कैसे पहुंचे

#include <iostream> 
#include <fstream> 
using namespace std; 

int main() { 
     ifstream inputFile("file.txt",ios::in); 
     cout << inputFile.fileDesc << endl;//made up call 
     return 0; 
} 

सवाल यह है कि, ifstreams के लिए fileDesc जैसी कुछ है? यदि नहीं, तो मैं ऐसा करने के बारे में कैसे जाऊं?

+0

सवाल यह है कि आप ऐसा क्यों करना चाहते हैं? यदि आप अपने तर्कसंगत समझाते हैं तो शायद एक विकल्प पाया जा सकता है जो आपकी वास्तविक समस्या को हल करता है। –

+0

मुझे फ़ाइल डिस्क्रिप्टर की आवश्यकता है कि मुझे फ़ाइल पर fstat() चलाने की आवश्यकता है क्योंकि इसे खोले जाने के कुछ समय बाद। मुझे एहसास है कि मैं फ़ाइल नाम पर stat() का उपयोग कर सकता हूं लेकिन मैं fstat() का उपयोग कर रहा हूं, इसलिए मैं स्ट्रीम पर आंकड़े भी प्राप्त कर सकता हूं। मैं बस एक संक्षिप्त विधि चाहता था जिसका उपयोग आरक्षित स्ट्रीम डिस्क्रिप्टर (0 (एसटीडीआईएन), 1 (एसटीडीओयूटी), और 2 (एसटीडीईआरआर) और खोले गए फाइलों के लिए किया जा सकता है। –

+0

संपादित करें: मुझे एहसास है कि अगर स्ट्रीम स्ट्रीम है, लेकिन इसमें पूर्वनिर्धारित आईओ धाराओं जैसे आरक्षित दायर नहीं हैं। –

उत्तर

4

यदि आप स्ट्रीम से FILE * प्राप्त करने का प्रयास कर रहे हैं तो उत्तर मूल रूप से "आप नहीं कर सकते" जैसा कि here से अधिक प्रबुद्ध लोगों द्वारा बताया गया है।

+0

+1 यह अच्छा है। – karlphillip

+0

ठीक है, मैं फ़ाइल डिस्क्रिप्टर पर fstat() चलाने की योजना बना रहा हूं, लेकिन मैं वास्तविक फ़ाइल नाम पर stat() का उपयोग कर सकता हूं। –

0

open() पर एक नज़र डालें:

खुला समारोह बनाता है और फ़ाइल नाम से नाम की फ़ाइल के लिए एक नई फ़ाइल वर्णनकर्ता देता है।

+1

यह एक अच्छा विचार नहीं है, क्योंकि "file.txt" ' इस बीच पूरी तरह से अलग फ़ाइल। –

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