Linux深入了解文件描述符及文件结构

Linux中一切皆文件,文件描述符是管理已打开文件的高效手段。本文介绍了文件描述符的概念,POSIX标准规定的默认文件描述符,以及与之相关的`exec`、`echo`、`tee`命令。同时探讨了`/dev/fd`、`/dev/null`、`ulimit`和文件描述符结构,包括file status flag、引用计数、file_operations等,最后讨论了文件描述符与FILE指针的区别以及I/O操作的缓冲区影响。
摘要由CSDN通过智能技术生成

文件描述符

有句经典的话是:Linux下一切皆文件。它最简单的总结了Linux的特点,Linux下文件被分为普通文件目录文件链接文件设备文件。在Linux下显示器、键盘等都会被看成是一个文件、而所有的文件就是通过文件描述符来管理的。

举个栗子:一个Linux操作系统就相当于一本很厚很厚的书,书的每一页都是由文件构成的(包括我们的显示器键盘等,就有专门的页码,在那一页上查看就相当于显示器或者键盘),现在我们要显示一个被打开的文件A到显示器文件上,也就是把A页码上的内容输出到显示器文件上,那我们要先从一本书里找到A文件那一页,假如这本书很厚很厚,那么这个工作这对操作系统来说无疑是一种负担,所以它就想出了一个好办法,就是为A文件的那一页贴上一个书签用于指代被打开的文件A,有了这个索引,以后的所有I/O操作就可以直接通过书签翻到A的那一页,不用再一次一次的从开始翻了,大大提高了操作系统管理已打开文件的效率,这个索引书签就称作文件描述符。

总结一下:文件描述符就是操作系统为了高效管理已打开文件所创建的一个索引。

POSIX标准规定:

3个默认文件描述符:

每次打开文件时(含socket)必须使用当前进程中最小可用的文件描述符号码,在网络通信中应注意防止串话,也就是说在默认情况下新打开一个文件的文件描述符应该是3

exec和echo

exec和echo都是bash(命令解释器)的两个内置命令

exec

exec有两种用法:  

  1. exec 命令:不启动新的终端,用输入的命令代替当前的shell程序,命令结束后shell将直接退出。例如:exec ls,执行ls命令,结束后退出终端。(想要在当前终端执行应使用source或者“.”命令)
  2. exec 文件重定向:仅执行命令,不会替换shell程序。例如:exec 3>&0,将文件描述符3重定向到标准输入。

echo

用于字符串的输出:

    echo "字符串":这里可以省略双引号,单引号为不对

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值