windows 文件描述符

来源:互联网 发布:linux源码编译安装 编辑:程序博客网 时间:2024/06/05 18:25
在类Unix系统下用文件描述符descriptor来访问文件。文件描述符是非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件。如下:
    int fileDescripter = fopen("fileName",O_RDONLY);
Windows下一般(最基本的)用fopen访问文件。
    FILE * fp = fopen("fileName","r");
但是他的返回值是一个结构体的文件句柄。有时我们需要将linux程序移植转换到windows下,需要获得文件描述符,其实windows文件描述符就是结构体FILE的_file成员。
struct _iobuf {        char *_ptr;       int _cnt;       char *_base;       int _flag;       int _file;//文件描述符      int _charbuf;       int _bufsiz;      char *_tmpfname;  };  typedef struct _iobuf FILE;  
比如我要用到protobuf的FileInputStream,他的构造函数有一个参数就是文件描述符,这样直接用FILE的_file成员即可。如下:
FILE *fp = fopen("fileName","r");    int fileDescripter = fp->_file;    google::protobuf::io::FileInputStream fin(fileDescripter);
还没在网上搜索到这个。
0 0