Linux——文件描述符
Posted 一棵灬胡杨树
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux——文件描述符相关的知识,希望对你有一定的参考价值。
何为文件描述符?
在进程中每打开一个文件,都会创建有相应的文件描述信息struct file,这个描述信息被添加在pcb的struct files_struct中,以数组的形式进行管理,随即向用户返回数组的下标作为文件描述符,用于操作文件。
每个进程在PCB(Process Control Block)中保存着一份文件描述符表,文件描述符就是这个表的索引,每个表项都有一个指向已打开文件的指针。
文件描述符 0 与 进程的标准输入(standard input)关联
文件描述符 1 与 标准输出(standard output)关联
文件描述符 2 与 标准错误(standard error)关联
dup2函数
dup2可以用参数newfd指定新文件描述符的数值。若参数newfd已经被程序使用,则系统就会将newfd所指的文件关闭,若newfd等于oldfd,则返回newfd,而不关闭newfd所指的文件。dup2所复制的文件描述符与原来的文件描述符共享各种文件状态。共享所有的锁定,读写位置和各项权限或flags等。
举个简单的例子:
在我们打开tmp.txt文件后,使用dup2函数,在printf打印之前,将1重定向到了指定的文件,因此printf打印将数据写入了指定文件中。
Notes:重定向本质在不改变所操作的文件描述符的情况下,通过改变描述符对应的文件描述信息进而实现改变所操作的文件。
以上是关于Linux——文件描述符的主要内容,如果未能解决你的问题,请参考以下文章