2010-08-18 131 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

相關問題