2010-08-18 11 views
5

¿Hay alguna forma de acceder al descriptor de archivo de un archivo abierto en C++? Entonces ...Cómo acceder al descriptor de archivo de Open File

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

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

La pregunta es, ¿existe algo así como fileDesc para ifstreams? Si no, ¿cómo voy a hacer esto?

+0

La pregunta es ¿por qué quieres hacer esto? Si explica su racional, tal vez se encuentre una alternativa que resuelva su problema real. –

+0

El motivo por el que necesito el descriptor de archivo es que necesito ejecutar fstat() en un archivo como un tiempo después de que se haya abierto. Me doy cuenta de que podría usar stat() en el nombre de archivo pero estoy usando fstat() para poder obtener estadísticas en las transmisiones también. Solo quería un método conciso que se pudiera usar para los descriptores de flujo reservados (0 (STDIN), 1 (STDOUT) y 2 (STDERR) y para los archivos que se abren. –

+0

EDITAR: Me doy cuenta de que ifstream es un flujo, pero no tiene un archivo reservado como las secuencias de E/S antes mencionadas. –

Respuesta

4

Si está tratando de llegar al ARCHIVO * desde la transmisión, la respuesta es básicamente "no se puede", como dicen las personas más ilustradas que yo here.

+0

+1 Esto es bueno. – karlphillip

+0

Bueno, planeo ejecutar fstat() en el descriptor de archivo, pero podría usar stat() en el nombre de archivo real. –

0

Tome un vistazo a open():

La función abierta crea y devuelve un nuevo descriptor de archivo para el archivo llamado por nombre de archivo.

+1

Esto no es una buena idea, porque '" file.txt "' podría referirse a un archivo completamente diferente mientras tanto. –

Cuestiones relacionadas