linux中标准IO及文件描述符是什么

发布时间:2021-10-22 11:04:11 作者:柒染
来源:亿速云 阅读:229

这篇文章将为大家详细讲解有关linux中标准IO及文件描述符是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

1. 文件描述符

  1. 文件描述符是一个整型数值

  2. 文件描述符是标记一个被打开的特定的文件的

  3. Linux系统分配文件描述符有一定的规则:

    • 从小到大的方式来分配文件描述符

    • 文件关闭后, 之前分配的文件描述符会被系统回收

    • 系统回收的文件描述符会重新与未被占用的文件描述符一起, 以从小到大的规则再次进行分配

2. Linux系统启动之后, 返回的文件描述符是从fd = 3开始的, 为什么?

  1. Linux系统启动之后, 返回的文件描述符是从fd = 3开始的  

    linux中标准IO及文件描述符是什么

    linux中标准IO及文件描述符是什么

  2. Linux系统启动之后, fd = 0, 1, 2三个文件描述符被分配给了stdin, stdout及stderr

  3. fd = 0, 1, 2三个文件描述符可以通过编程的方式关闭文件来释放(当前的stdout是输出到命令行的), 然后重新打开一个文件, 这样标准输入输出便会重定位到了我们打开的文件了. 这样可以实现标准输出的重定位.  

    linux中标准IO及文件描述符是什么

    linux中标准IO及文件描述符是什么

3. 文件描述符的复制

1. dup函数复制文件描述符
   - dup复制文件描述符,新的文件描述符是Linux系统自动分配的未被使用的最小值

 linux中标准IO及文件描述符是什么

linux中标准IO及文件描述符是什么

2. dup2复制文件描述符
   - dup2复制文件描述符时,编程者可以指定复制的新的文件描述符的数值,以下实例指定文件描述符为6.

 linux中标准IO及文件描述符是什么

linux中标准IO及文件描述符是什么

3. fcntl复制文件描述符
   - fcntl也可以用来复制文件描述符
   - fcntl的函数原型为 int fcntl(int fd, int cmd, ... /* arg */ );
     各参数含义为:
      fd: 旧的文件描述符
      cmd:命令参数,不同的命令参数执行不同的任务
      .../* arg */: 变参,与cmd参数密切相关.例如在cmd为F_DUPFD时,fcntl函数可以指定复制后的新的文件描
      述符的大小大于或者等于参数arg

linux中标准IO及文件描述符是什么

linux中标准IO及文件描述符是什么

4. Linux中的标准IO

  1. 之前操作文件有FileIO, 为何这里又出现了标准IO?

    • 标准IO也是操作文件的一些标准库函数

    • 标准IO是在FileIO的一些列Linux内核API的基础上进行了一层封装

    • 标准IO在封装时提供了应用层对文件读写的缓冲, 这样可以与Linux kernel在对文件读写是的缓冲进行配合, 从而提高文件操作的效率

    • 标准IO库函数屏蔽了不同操作系统之间的差别, 从而在不同操作系统上使用方法几乎一模一样(Linux, Windows)

  2. 标准IO包含哪些常用的库函数及如何使用?

    • 常用的标准IO库函数有: fopen, fclose, fwrite, fread, fflush, fseek等等

    • 常用的标准IO库函数的用法与FileIO的常用函数基本对应及相似

    • 举例说明用法  

linux中标准IO及文件描述符是什么

linux中标准IO及文件描述符是什么

关于linux中标准IO及文件描述符是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. linux中关于磁盘IO
  2. 再学C++ Primer(8)-标准IO库

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux

上一篇:如何理解LINUX日志

下一篇:如何优雅的给Docker配置网络代理

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》