博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文件描述符和文件指针的相互转换
阅读量:4589 次
发布时间:2019-06-09

本文共 835 字,大约阅读时间需要 2 分钟。

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*;
文件指针 到 文件描述符: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;
}

转载于:https://www.cnblogs.com/ChunJian-YANG/p/5356968.html

你可能感兴趣的文章
Jmeter 做压力测试步骤
查看>>
jmeter生成随机的四位数
查看>>
Jmeter做接口的压力测试
查看>>
sql语句优化的30种方法
查看>>
MyISAM和InnoDB的区别
查看>>
springboot2.0 management.security.enabled无效
查看>>
spring cloud启动zipkin,报错maven依赖jar包冲突 Class path contains multiple SLF4J bindings
查看>>
源发行版8需要目标发行版1.8
查看>>
Cleartext HTTP traffic to xxx not permitted解决办法
查看>>
[Docker] Win10中安装Docker并运行Nginx镜像
查看>>
salesforce入门
查看>>
MySQL 8.017连接Navicat中出现的问题
查看>>
Css布局
查看>>
遇到的小问题
查看>>
sql server的Case When Then关键字的使用
查看>>
Css进阶
查看>>
SQL在工作中遇到的问题
查看>>
在电脑CMD中通过pip安装完部分文件后PyCharm仍无法使用的解决方法
查看>>
笨方法学Python3(21-44)
查看>>
笨方法学python3
查看>>