linux---fdopen函数的理解
2016-08-26 20:45
447 查看
①表头文件:#include<stdio.h>
定义函数:FILE * fdopen(int fd, const char * mode);
②先理解 文件描述符合文件指针:
*比fd更适合跨平台,应该多用fopen在,少用open。
③为什么要引入fdopen函数?
不带缓存IO操作创建的文件返回的是文件描述符(fd),带缓存IO操作创建的文件返回的是文件指针。通俗的理解fdopen就是把参数fd的文件描述符转化为文件指针。
④注意事项
因为这些特殊类型的文件不能用标准I/O fopen函数打开,首先必须先调用设备专用函数以获得一个文件描述符,然后用fdopen使一个标准I/O流与该描述符相结合。
fdopen取一个现存的文件描述符(我们可能从
open,dup,dup2,fcntl,pipe,socket,socketpair或accept函数得到此文件描述符) ,并使一个标准的I/O流与该描述符相结合。则代表着文件指针的流形态,此形态必须和原先文件描述词读写模式相同。
定义函数:FILE * fdopen(int fd, const char * mode);
②先理解 文件描述符合文件指针:
文件描述符
在linux系统中,设备也是以文件的形式存在,要对该设备进行操作就必须先打开这个文件,打开文件就会获得文件描述符,它是个很小的正整数。每个进程在PCB(Process Control Block)中保存着一份文件描述符表,文件描述符就是这个表的索引,每个表项都有一个指向已打开文件的指针。文件描述符的优点:兼容POSIX标准,许多Linux和UNIX系统调用都依赖于它。文件描述符的缺点:不能移植到UNIX以外的系统上去,也不直观。文件指针
C语言中使用的是文件指针而不是文件描述符做为I/O的句柄。文件指针指向进程用户区中的一个被称为FILE结构的数据结构。FILE结构包括一个缓冲区和一个文件描述符。而文件描述符是文件描述符表的一个索引,因此从某种意义上说文件指针就是句柄的句柄(在Windows系统上,文件描述符被称作文件句柄)。FILE *中除了包含了fd信息,还包含了IO缓冲,是C标准形式,所以FILE*比fd更适合跨平台,应该多用fopen在,少用open。
③为什么要引入fdopen函数?
不带缓存IO操作创建的文件返回的是文件描述符(fd),带缓存IO操作创建的文件返回的是文件指针。通俗的理解fdopen就是把参数fd的文件描述符转化为文件指针。
④注意事项
因为这些特殊类型的文件不能用标准I/O fopen函数打开,首先必须先调用设备专用函数以获得一个文件描述符,然后用fdopen使一个标准I/O流与该描述符相结合。
fdopen取一个现存的文件描述符(我们可能从
open,dup,dup2,fcntl,pipe,socket,socketpair或accept函数得到此文件描述符) ,并使一个标准的I/O流与该描述符相结合。则代表着文件指针的流形态,此形态必须和原先文件描述词读写模式相同。
相关文章推荐
- linux fork函数理解
- Unix/Linux fork()函数的理解
- 对于linux下system()函数的深度理解(整理)
- 对于linux下system()函数的深度理解(整理)
- Unix/Linux fork() 函数一次调用2次返回实现原理(个人理解仅供参考)
- (转)LINUX select()函数的理解
- 深入理解Linux网络技术内幕——协议处理函数
- 对于linux下system()函数的深度理解(整理)
- 对于linux下system()函数的深度理解(整理)
- linux中mmap函数的理解
- linux下lseek()函数理解
- 对于linux下system()函数的深度理解(整理)
- 进程函数一步步理解Linux之信号
- Linux驱动--函数,宏,结构体理解记录
- Linux中IS_ERR()函数的理解
- LINUX中signal函数的理解
- C语言计算时间函数 & 理解linux time命令的输出中“real”“user”“sys”的真正含义
- linux_C一站学习--课后习题(一)简单函数;分支语句;深入理解函数
- 从汇编角度来理解linux下多层函数调用堆栈执行状态
- 从汇编角度来理解linux下多层函数调用堆栈运行状态