文件描述符和流的关系?
来源:互联网 发布:js 绝对值 math.abs 编辑:程序博客网 时间:2024/05/22 23:31
任何一种操作系统中,程序在开始读写一个文件的内容之前,必须首先在程序与文件之间建立连接或通信通道,这一过程称为打开文件。打开一个文件的目的可以是为了读或者为了写,也可以是即读又写。
UNIX系统中有两种机制用于描述程序与文件的这种连接:
(1)文件描述符
(2)流
文件描述符 和 流 相同点:
1. 都是用来表示用户程序与被操作的文件之间的连接,并在此连接的 基础上对文件进行读写等访问。
2. 都能表示与普通文件,与设备(如终端),与管道或者套接字的连接,用户打开一个文件,要么返回文件描述符,要么返回一个流。
3. 都包含了一大类的I/O库函数
文件描述符 和 流 不同点:
文件描述符 和 流的关系:
流给用户程序提供了更高一级的(功能更强大,使用更简化)的I/O接口,它处在文件描述符方式的上层,也就是说,流函数是通过文件描述符函数来实现的。
流 相对于 文件描述符的优点:
UNIX系统中有两种机制用于描述程序与文件的这种连接:
(1)文件描述符
(2)流
文件描述符 和 流 相同点:
1. 都是用来表示用户程序与被操作的文件之间的连接,并在此连接的 基础上对文件进行读写等访问。
2. 都能表示与普通文件,与设备(如终端),与管道或者套接字的连接,用户打开一个文件,要么返回文件描述符,要么返回一个流。
3. 都包含了一大类的I/O库函数
文件描述符 和 流 不同点:
- 文件描述符表示为int类型的对象。例如标准输入对应文件描述符0,标准输出对应文件描述符1。
- 而流则表示为指向结构FILE的指针FILE* ,因此流也称为“文件指针”
- 如果需要对特定设备进行控制操作,必须使用文件描述符方式,没有函数能对流进行这类操作。
- 如果需要按照特殊的方式进行I/O操作(例如非阻塞的方式),必须使用文件描述符方式,也没有函数能对流进行这类操作。
文件描述符 和 流的关系:
流给用户程序提供了更高一级的(功能更强大,使用更简化)的I/O接口,它处在文件描述符方式的上层,也就是说,流函数是通过文件描述符函数来实现的。
流 相对于 文件描述符的优点:
- 执行实际输入输出操作的流函数集合比文件描述符函数要丰富很多,而功能也灵活,强大不少。
- 文件描述符函数只提供简单的传送字符块的函数
- 流函数提供格式化I/O,字符I/O,面向行的I/O等大量函数
- 流函数有利于程序的移植,任何基于ANSI C的系统都支持流,文件描述符的支持则较弱
0 0
- 文件描述符 和 流的关系
- 文件描述符 和 流的关系
- 文件描述符和流的关系?
- 文件描述符fd和FILE的关系
- 文件描述符 与 文件流 的关系
- linux 文件描述符和库函数FILE文件指针关系
- linux文件描述符,系统打开文件和i节点的关系
- OC 证书、描述文件、APPID还有打包IPA以及证书和描述文件的关系
- 进程表、文件描述符表、文件表的关系
- Linux文件描述符与文件的关系
- linux文件描述符与打开文件之间的关系
- 文件描述符与文件对象的关系
- 文件描述符与打开文件的关系
- linux文件描述符与打开文件的关系
- 文件描述符fd与文件指针FILE*的关系
- Linux 下文件描述符和打开文件之间的关系
- 简析文件描述符(fd)和FILE结构体的关系
- 文件描述符(fd)和FILE结构体的关系
- 我为什么三十岁还要学习IOS
- node浅析-npm自带
- iOS-动画 之 Layer(1)
- 「学习笔记」3.12代码学习
- Git学习(五)
- 文件描述符和流的关系?
- Oracle GoldenGate 支持 从SAP HANA database抽取或者复制数据到SAP HANA database 吗?
- Mysql 5.7免安装版配置 win10
- JDBC API报错:ResultSet is from UPDATE. No Data
- 内存的分配方式都有哪些?
- fuzzle
- jmycms
- org.apache.cxf.interceptor.Fault: Could not start Jetty server on port 8,888: Cannot assign requeste
- Spring 实践 -拾遗