这篇文章将为大家详细讲解有关linux中标准IO及文件描述符是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
文件描述符是一个整型数值
文件描述符是标记一个被打开的特定的文件的
Linux系统分配文件描述符有一定的规则:
从小到大的方式来分配文件描述符
文件关闭后, 之前分配的文件描述符会被系统回收
系统回收的文件描述符会重新与未被占用的文件描述符一起, 以从小到大的规则再次进行分配
Linux系统启动之后, 返回的文件描述符是从fd = 3开始的
Linux系统启动之后, fd = 0, 1, 2三个文件描述符被分配给了stdin, stdout及stderr
fd = 0, 1, 2三个文件描述符可以通过编程的方式关闭文件来释放(当前的stdout是输出到命令行的), 然后重新打开一个文件, 这样标准输入输出便会重定位到了我们打开的文件了. 这样可以实现标准输出的重定位.
1. dup函数复制文件描述符
- dup复制文件描述符,新的文件描述符是Linux系统自动分配的未被使用的最小值
2. dup2复制文件描述符
- dup2复制文件描述符时,编程者可以指定复制的新的文件描述符的数值,以下实例指定文件描述符为6.
3. fcntl复制文件描述符
- fcntl也可以用来复制文件描述符
- fcntl的函数原型为 int fcntl(int fd, int cmd, ... /* arg */ );
各参数含义为:
fd: 旧的文件描述符
cmd:命令参数,不同的命令参数执行不同的任务
.../* arg */: 变参,与cmd参数密切相关.例如在cmd为F_DUPFD时,fcntl函数可以指定复制后的新的文件描
述符的大小大于或者等于参数arg
之前操作文件有FileIO, 为何这里又出现了标准IO?
标准IO也是操作文件的一些标准库函数
标准IO是在FileIO的一些列Linux内核API的基础上进行了一层封装
标准IO在封装时提供了应用层对文件读写的缓冲, 这样可以与Linux kernel在对文件读写是的缓冲进行配合, 从而提高文件操作的效率
标准IO库函数屏蔽了不同操作系统之间的差别, 从而在不同操作系统上使用方法几乎一模一样(Linux, Windows)
标准IO包含哪些常用的库函数及如何使用?
常用的标准IO库函数有: fopen, fclose, fwrite, fread, fflush, fseek等等
常用的标准IO库函数的用法与FileIO的常用函数基本对应及相似
举例说明用法
关于linux中标准IO及文件描述符是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。