Linux文件描述符

本文详细解析了Linux系统中文件描述符的作用及其在进程管理中的应用。从内核创建进程开始,介绍文件描述符如何标识文件对象,以及与标准输入输出流的关系。深入探讨了文件描述符在PCB中的存储方式,以及它与文件指针的关联。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件描述符

  • 文件描述符是一个非负整数,Linux用文件描述符来标识每个文件对象,当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。

本篇文章主要围绕下图进行讲解
在这里插入图片描述

流程

首先当有一个进程创建时,操作系统的核心部分kernel会为之创建PCB,PCB中存在文件描述符表(file struct 整型数组,文件描述符类似枚举类型),文件描述符默认前三位分别对应为三种流(输入、输出、错误),当有新的文件创建时,文件描述符会自动加1,代表文件指针file*,文件指针指向一个结构体,里面存放三种类型数据如图。

kernel

  • Linux内核核心部分,主要负责管理存储器、文件、外设、系统资源等

PCB

  • 系统用于维护进程的结构体
  • 操作系统为了方便管理进程,为每个进程创建PCB
  • PCB结构体中,存在file struct(文件描述符表,是一个int数组),其中对应序号(int)存放有三种流和文件指针file*,file指向磁盘文件

标准输入输出流

  • 头文件 #include <unistd.h>
文件描述符标准流描述
0stdin标准输入流
1stdout标准输出流
2stderr标准错误流
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值