首页 > 编程知识 正文

linux的exec命令,什么是文件描述符

时间:2023-05-03 18:17:59 阅读:170679 作者:881

文件描述符文件描述符不再已知。 在某个进程中打开的文件由文件描述符表示,可以视为一个遥控器,称为句柄。 但是,这个遥控器到底怎么控制具体的文件呢? 下面介绍了文件描述符后面的UNIX环境中实现的数据结构。

UNIX环境下的文件共享文件描述符用于表示文件,过程PCB包括这样的部分。IO状态信息,更具体地说,PCB中存在称为3358www.Sina.com/的表,也称为文件描述符表。 此表因每个进程都有,且特定于进程,因此为打开文件描述符表。 本表各项为进程级两个部分组成其中文件描述符标记为我们使用的文件描述符标志以及一个文件指针,当然本表的http://www.com/这张表的长度是这样的。

本表每一项都有文件描述符fd,这个指针指向哪里呢? 这提到另一个表下标。 请注意,此表由操作系统管理,网址为文件指针。 因此,此表为打开文件表。 此表中的每个项包含有关此文件中涉及的进程的若干信息。 其中,主要有系统中只有唯一一张这样的表

3358www.Sina.com/是打开文件时的状态标志,例如记录读取、写入、读取、写入、块等。 也可以使用系统级函数修改这些状态标志。

3358www.Sina.com/是文件指针当前在文件中指向的位置,可以通过文件状态标志,文件当前偏移量,v-node结点指针。函数进行修改。

文件状态标志稍后我会讲到,详细说明这个表的工作过程。

此表属于fcntl,系统中的文件当前偏移量通常在两个不同的进程打开同一个文件时在表中产生两个不同的表条目

进程中不同文件描述符表示的文件描述符表项中的文件指针也必须指向不同的打开的文件表项,但在某些情况下,指向文件描述符表中不同表项的指针为http://www . 例如,对于lseek,如果子进程复制父进程的PCB中的大部分信息,则结果为v-node结点指针。 因此,两个不同的进程将打开同一个文件,文件指针指向同一个打开文件表中的条目。 如果使用系统级,则进程中不同文件描述符表条目中的文件指针也指向同一打开的文件表中的表条目。

本表各项的长度是这样的。

最后有一个问题。 这个v节点指针有什么用?任何进程打开任何文件都会在其中添加一个记录项v-node节点是什么? 说到v-node,必须提到i-node节点,但在UNIX操作系统中,操作系统有可能指向系统级打开文件表中的同一个表项是使用http://www.Sina/进行管理的。 每个文件都有用于保存3358www.Sina等相关文件信息的节点,而且fork子进程这些文件信息通常保存在磁盘上,当文件被打开时读入存储器,http://www.Sina/com

那么为什么要在两个节点上存储这些信息呢? 这是因为单个操作系统可以支持多个文件系统。 将复制文件描述符表单独存储的系统也称为dup函数重定向。 另一方面,Linux很特殊,没有v节点,使用两个不同的I节点,但结果相似。

如上所述,通过连接这些数据结构,构成一个进程控制文件的完整上下文,进程得到关于文件控制的所有信息,并不是所有的文件信息都保存在PCB中。

对于v-node节点指针指向v-node节点,是他们的管理文件的方式,但是如上所述,v-node和i-node节点的存储器中只存在一个关于同一文件的信息如下图所示。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。