文件描述符和文件指针的相互转换
来源:互联网 发布:短信可爱铃声软件 编辑:程序博客网 时间:2024/05/20 05:26
1文件描述符,在linux系统中,设备也是以文件的形式存在,要对该设备进行操作就必须先打开这个文件,打开这个文件就会获得这个文件描述符,它是个很小的正整数,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。
文件描述符的优点:兼容POSIX标准,许多Linux和UNIX系统调用都依赖于它。
缺点:不能移植到非UNIX系统上,也不直观。
文件指针,C语言中使用的是文件指针而不是文件描述符作为I/O的句柄,“文件指针(file pointer)”指向进程用户区中的一个被称为FILE结构的数据结构。FILE结构包括一个缓冲区和一个文件描述符值。而文件描述符值是文件描述符表中的一个索引。从某种意义上来说,文件指针就是句柄的句柄。
2. 文件指针/句柄(FILE*)、文件描述符以及文件路径(filepath)的相互转换
文件路径 到 文件指针:filepath --fopen()-->FILE*;
文件路径 到 文件描述符:filepath--open()--fd;
文件描述符 到 文件指针:fd--fdopen()-->FILE*;
文件路径 到 文件描述符:filepath--open()--fd;
文件描述符 到 文件指针:fd--fdopen()-->FILE*;
文件指针 到 文件描述符:FILE*--fileno()--->fd;
3.示例代码
int main(int argc, char **argv){ FILE *fp; printf("stdin fileno:%d\n",fileno(stdin)); printf("stdout fileno:%d\n",fileno(stdout)); printf("stderr fileno:%d\n",fileno(stderr)); fp = fopen("aa.c","w+"); printf("aa.c'fileno %d\n",fp->_fileno); return 0;}
0 0
- 文件描述符和文件指针的相互转换
- C语言文件指针和文件描述符相互转换
- 文件指针和文件描述符之间的相互转换 fd---->fp 和 fp---->fd
- 文件指针和文件描述符之间的相互转换 fd---->fp 和 fp---->fd
- 文件描述符fd和文件指针fp之间的相互转换
- 文件描述符fd和文件指针fp之间的相互转换
- 标准的I / O流和文件描述符相互关联(文件描述符与文件指针间的转换)
- 文件描述符fd和文件指针File* fp的区别和转换
- 文件描述符和文件指针区别
- 文件指针和文件描述符
- 文件指针和文件描述符
- Linux文件描述符和文件指针
- 文件描述符和文件指针
- 文件描述符和文件指针
- 文件描述符和文件指针
- 辨析文件描述符和文件指针
- 文件描述符和文件指针
- 【Linux】---文件描述符和文件指针
- 不用加减乘除做加法
- 堆排序算法
- Visual Studio中的文件类型(sln vcproj suo user ncb)
- 快速理解JavaScript中apply()和call()的用法和用途
- XUtils之注解机制详解
- 文件描述符和文件指针的相互转换
- Caffe学习系列(13):数据可视化环境(python接口)配置
- asp.net服务器控件button先执行js再执行后台的方法
- 215. Kth Largest Element in an Array
- CentOS7安装tomcat8
- angular2 脏检查总述--zone.js 原理
- Dubbo架构设计详解
- 解决 SqlServer执行脚本,文件过大,内存溢出问题
- 458PoorPigs