linux c 文件指针 句柄(FILE*) 文件描述符(fd) 文件路径(filepath) 互相转换
最近在linux下编程常需要对一些文件进行操作。有时不同的条件下,需要将文件指针/句柄(FILE*)、文件描述符(fd)以及文件路径(filepath)进行相互转换,以满足实际的编程需要。
现简单的做一下整理。如下。
1:文件路径 文件描述符应是唯一的。文件指针(值)不是唯一的,但指向的对象也应该是唯一的。
2: FILE*中包含fd的信息,而且还包含IO缓冲,所以可以理解为FILE*是对fd的封装,是C的标准形式,所以FILE*比fd更适合跨平台,应多用fopen,少用 open。
3:转换
文件路径 到 文件指针:filepath --fopen()-->FILE*;
文件路径 到 文件描述符:filepath--open()--fd;
文件描述符 到 文件指针:fd--fdopen()-->FILE*;
文件描述符 到 文件路径:fd--readlink(/proc/%getpid()/fd/%fd"))-->filepath;
详细参考 《linux c 文件描述符 得到 文件名》 https://blog.csdn.net/whatday/article/details/114916142
文件指针 到 文件描述符:FILE*--fileno()--->fd;
详细参考 《linux c fopen open 互相转换 文件指针 到 文件描述符 FILE* 转 FD》https://blog.csdn.net/whatday/article/details/114916313
linux c 文件指针 句柄(FILE*) 文件描述符(fd) 文件路径(filepath) 互相转换相关推荐
- <Linux基础--文件描述符fd、重定向、文件流指针FILE*概念理解>
文章目录 1.文件描述符fd 2.重定向 3.文件流指针:FILE* 4.动态库和静态库 1.文件描述符fd 文件描述符:实际上就是内核中一个进程打开的文件描述信息数组(file* fd_array[ ...
- linux 文件指针,Linux中文件描述符fd与文件指针FILE*互相转换实例解析
本文研究的主要是Linux中文件描述符fd与文件指针FILE*互相转换的相关内容,具体介绍如下. 1.文件描述符fd的定义:文件描述符在形式上是一个非负整数.实际上,它是一个索引值,指向内核为每一个进 ...
- 文件描述符fd和文件指针File* fp的区别和转换
在linux系统中把设备和普通文件也都看做是文件,要对文件进行操作就必须先打开文件,打开文件后会得到一个文件描述符,它是一个很小的正整数,是一个索引值. 内核会为每一个运行中的进程在进程控制块pcb ...
- linux存储--文件描述符fd与FILE结构体(二)
文件描述符fd 对于linux而言,所有对设备(对于linux而言,一切皆文件)和文件的操作都使用文件描述符来进行的. 文件描述符是一个非负的整数,它是一个索引值,指向内核中每个进程打开文件的记录表. ...
- ftpclient读取服务器文件能获得文件名文件大小0_理解Linux的文件描述符FD与Inode
FD 文件描述符 一.概念 Linux 系统中,把一切都看做是文件,当进程打开现有文件或创建新文件时,内核向进程返回一个文件描述符,文件描述符就是内核为了高效管理已被打开的文件所创建的索引,用来指向被 ...
- linux文件描述符与标识符,文件描述符fd
这里以问答的方式来讨论这个问题: 1. 文件描述符 fd 和文件指针 FILE *的关系? 文件描述符是什么?我们知道每一个进程都有一个自己的PCB(进程控制块),进程控制块的结构是: struct ...
- 嵌入式Linux系统编程学习之九基于文件描述符的文件操作
文章目录 前言 一.文件描述符 二.打开.创建和关闭文件 三.读写文件 四.改变文件大小 五.文件定位 六.原子操作 七.进一步理解文件描述符 八.文件描述符的复制 九.文件的锁定 十.获取文件信息 ...
- linux进程文件描述符 vnode,Linux C编程详解:进程原理分析、文件描述符和文件记录表、文件句柄和文件原理...
一.引言 文件操作是Linux C编程中其中的一项核心技术,实际上也相当重要,这里并不是说狭义上的那种文件操作,它也非常有助于理解和学习Linux系统.为什么这样说呢?因为在Unix/Linux的世界 ...
- Linux - fd文件描述符和文件详解
感谢各位 点赞 收藏 评论 三连支持 本文章收录于专栏[Linux系统编程] ❀希望能对大家有所帮助❀ 本文章由 风君子吖 原创 ...
最新文章
- java list 自定义类型转换_java – 可以从List生成平面XML结构的XStream自定义转换器?...
- 20Composite(组合)模式
- 利用redis List队列简单实现秒杀 PHP代码实现
- android gradle 语法,Gradle 1.语法
- Linux系统 设置 cockpit 自动开机启动时异常问题处理(设置systemctl enable cockpit 异常【解决办法】)
- 超多的CSS3圆角渐变网页按钮
- 欣赏多彩的计算机作品教案,三年级上信息技术教案-欣赏多彩的计算机作品(一)云南版...
- 观点对立,无关虚拟现实技术
- Java Class对象
- Node.js入门(含NVM、NPM、NVM的安装)-(转载)
- 单元测试报告软件测试,软件单元测试报告-模板
- html几种美丽的分割线
- 夜神与android链接,夜神安卓模拟器连接adb的方法步骤
- ubuntu系统下抓取屏幕
- 大数据的“多维度”与“时效性”
- 莫队算法小介绍——看似暴力的莫队算法
- ironbot智能编程机器人_小小工程师启蒙教练就选IronBot机器人套件
- iOS 7 之Airdrop 分享
- 【数据库】GaussDB客户端工具介绍
- 关于我在刷题时用OJ判题发现的cout相较于printf严重超时的问题