2010-08-18 3 views
5

Есть ли способ получить доступ к файловому дескриптору файла, открытого в C++? Итак ...Как получить доступ к файловому дескриптору открытого файла

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

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

Вопрос в том, что существует что-то вроде fileDesc для ifstreams? Если не так, как я буду заниматься этим?

+0

Вопрос в том, почему вы хотите это сделать? Если вы объясните свое рациональное, тогда, может быть, найдется альтернатива, которая решает вашу актуальную проблему. –

+0

Причина, по которой мне нужен файловый дескриптор, заключается в том, что мне нужно запустить fstat() в файле через некоторое время после его открытия. Я понимаю, что я могу использовать stat() для имени файла, но я использую fstat(), чтобы я мог получать статистику по потокам. Я просто хотел использовать сжатый метод, который можно было бы использовать для зарезервированных дескрипторов потоков (0 (STDIN), 1 (STDOUT) и 2 (STDERR) и для открытых файлов. –

+0

EDIT: Я понимаю, что ifstream - это поток, но он не имеет зарезервированных файлов, таких как ранее упомянутые потоки ввода-вывода. –

ответ

4

Если вы пытаетесь добраться до FILE * из потока, тогда ответ в основном «вы не можете», как заявили более просвещенные люди, чем я. here.

+0

+1 Это – karlphillip

+0

Ну, я планирую запустить fstat() в файловом дескрипторе, но я могу использовать stat() для фактического имени файла. –

0

Взгляните на open():

Открытая функция создает и возвращает новый дескриптор файла для файла с именем имя_файла.

+1

Это не очень хорошая идея, потому что '' file.txt '' может ссылаться на в то же время совершенно другой файл. –

Смежные вопросы