2010-08-18 120 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; 
} 

现在的问题是,像ifstreams fileDesc存在吗?如果不是,我会如何去做这件事?

+0

问题是你为什么要这样做?如果你解释你的理性,那么也许可以找到解决你的实际问题的替代方案。 – 2010-08-18 14:58:04

+0

我需要文件描述符的原因是我需要在文件打开后的某段时间运行fstat()。我意识到我可以在文件名上使用stat(),但我使用的是fstat(),所以我也可以获取流的统计信息。我只想要一个可用于保留流描述符(0(STDIN),1(STDOUT)和2(STDERR))以及打开文件的简洁方法。 – 2010-08-18 15:14:46

+0

编辑:我意识到ifstream是一个流,但它没有像先前提到的IO流那样的保留filedes – 2010-08-18 15:16:18

回答

4

如果你想从流中获取FILE *,那么答案基本上是“你不能”,正如更多开明的人所说的那样,比我here

+0

+1 This – karlphillip 2010-08-18 14:40:55

+0

嗯,我打算在文件描述符上运行fstat(),但是我可以在实际文件名上使用stat()。 – 2010-08-18 15:24:10

0

看看open()

open函数创建并返回由文件名命名的文件一个新的文件描述符。

+1

这不是一个好主意,因为''file.txt''可能指向同时完全不同的文件。 – 2014-10-16 09:02:13