如何访问已打开文件的文件描述符

9

是否有办法访问在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?如果没有,我该如何处理?

问题是为什么你想这样做?如果你解释你的理由,也许可以找到一个替代方案来解决你实际的问题。 - Martin York
我需要文件描述符的原因是在文件打开后的某个时间运行fstat()。我知道可以使用文件名对stat()进行操作,但我使用fstat()可以获取流的状态信息。我只是想要一个简洁的方法,可用于保留流描述符(0(STDIN)、1(STDOUT)和2(STDERR))以及已打开的文件。 - Dan Snyder
我意识到ifstream是一个流,但它没有像先前提到的IO流那样保留文件描述符。 - Dan Snyder
可能是 从 std::fstream 获取 FILE* 的重复问题。 - outis
2
我想在Linux中获取文件描述符,以便可以使用flock()锁定文件。 - Craig McQueen
2个回答

6

如果您正在尝试从流中获取FILE*,那么答案基本上是“您不能”,正如比我更有见识的人所述这里


我计划在文件描述符上运行fstat(),但实际文件名可以使用stat()。 - Dan Snyder

4

请看open()函数:

open()函数创建并返回一个新的文件描述符,用于指定文件名的文件。


1
这不是一个好主意,因为“file.txt”可能同时指代另一个完全不同的文件。 - not-a-user

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接