文件指针/句柄(FILE*)、文件描述符(fd)以及 文件路径(filepath)的相互转换
2013-11-28 10:32
281 查看
文件指针/句柄(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; //这属于“曲线救国”
文件指针 到 文件描述符:FILE*--fileno()--->fd;
文件指针 到 文件路径:FILE* --- ??? ---PATH;// 这个的直接转换的方法还没有查到。请补充。
最近在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; //这属于“曲线救国”
文件指针 到 文件描述符:FILE*--fileno()--->fd;
文件指针 到 文件路径:FILE* --- ??? ---PATH;// 这个的直接转换的方法还没有查到。请补充。
相关文章推荐
- 文件指针/句柄(FILE*)、文件描述符(fd)以及 文件路径(filepath)的相互转换
- 文件指针/句柄(FILE*)、文件描述符(fd)以及 文件路径(filepath)的相互转换(转)
- 文件指针/句柄(FILE*)、文件描述符(fd)以及 文件路径(filepath)的相互转换(完整版,收集,整理)
- 文件指针/句柄(FILE*)、文件描述符(fd)以及 文件路径(filepath)的相互转换(完整版,收集,整理)
- 文件指针/句柄(FILE*)、文件描述符(fd)以及 文件路径(filepath)的相互转换
- 文件指针/句柄(FILE*)、文件描述符(fd)以及 文件路径(filepath)的相互转换
- Linux C语言 文件指针/句柄(FILE*)、文件描述符(fd)以及 文件路径(filepath)的相互转换
- 文件指针/句柄(FILE*)、文件描述符(fd)以及 文件路径(filepath)的相互转换
- 文件指针/句柄(FILE*)、文件描述符(fd)以及 文件路径(filepath)的相互转换
- 文件指针/句柄(FILE*)、文件描述符(fd)以及 文件路径(filepath)的相互转换
- 文件指针/句柄(FILE*)、文件描述符(fd)以及 文件路径(filepath)的相互转换
- 文件指针/句柄(FILE*)、文件描述符(fd)以及 文件路径(filepath)的相互转换
- 文件File path与content:// Uri的相互转换
- 文件指针/句柄、文件描述符、文件路径的相互转换
- android Uri利用及解析(文件操作)以及与路径的相互转换
- 【转载】java输入流转为文件 InputStreamToFile 以及 byte[]和InputStream的相互转换
- 文件描述符fd和文件指针fp之间的相互转换
- 文件描述符fd和文件指针fp之间的相互转换
- C# Path操作路径文件、File处理文件、读写文件:byte[];string[];string; string与byte[]转换,File.AppendAllText()
- Android中文件File path与content:// Uri的相互转换