首页 > 系统相关 >NO.6 Linux系统编程-备忘

NO.6 Linux系统编程-备忘

时间:2023-09-30 20:00:31浏览次数:45  
标签:文件 FILENO 虚拟地址 备忘 NO.6 描述符 Linux inode 指针

一、文件I/O

  • FILE* fp 指针(指向的结构体有三个重要的成员)

  • 文件描述符: 通过文件描述可以找到文件的inode, 通过inode可以找到对应的数据块
    文件指针: 读和写共享一个文件指针, 读或者写都会引起文件指针的变化
    文件缓冲区: 读或者写会先通过文件缓冲区, 主要目的是为了减少对磁盘的读写次数, 提高读写磁盘的效率.
  • 虚拟地址空间

  • 进程的虚拟地址空间分为用户区和内核区
    内核区中很重要的一个就是进程管理, 进程管理中有一个区域就是PCB
  • pcb和文件描述符表
  • 一个进程有一个文件描述符表:1024
    •    前三个被占用, 分别是STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO
    •    文件描述符作用:通过文件描述符找到inode, 通过inode找到磁盘数据块
    
    虚拟地址空间->内核区->进程管理->PCB->文件描述表->文件描述符->文件IO操作使用文件描述符

     

# 流程图(帮助理解)

  • C库IO函数的工作流程

  • C库函数与系统函数的关系

  • 虚拟地址空间

  • pcb和文件描述符表

 

标签:文件,FILENO,虚拟地址,备忘,NO.6,描述符,Linux,inode,指针
From: https://www.cnblogs.com/ChenYuansong/p/17738084.html

相关文章

  • 软件设计模式系列之二十——备忘录模式
    备忘录模式是一种行为型设计模式,它允许我们在不暴露对象内部细节的情况下捕获和恢复对象的内部状态。这个模式非常有用,因为它可以帮助我们实现撤销、恢复和历史记录等功能。在本文中,我们将深入探讨备忘录模式的各个方面,包括定义、示例、结构、实现步骤、代码实现、典型应用场景、......
  • windows&linux共享
    优点:可以使用VS直接编辑linux跨平台代码apt-getinstallsambavim/etc/samba/smb.conf[code]//名称path=/code//路径writeable=yesbrowseable=yesguestok=yespkillsmbdsmbd//启动ps//显示当前终端的进程ps-ef|grepsmbd//|表示管道的输出;grep是过滤mk......
  • Linux第二周技术博客
    这周我们学习centos7的安装首先我们先去centos官方找到centos7版本的安装包以及它的镜像文件。安装好centos7后我们打开VMware选择创建新的虚拟机然后一直点击下一步到选择安装来源界面,将我们之前下载的镜像文件放入然后选择安装Linux系统,给虚拟机起好名字后将文件位置修改好点......
  • NO.5 gdb 调试备忘
    一、启动程序run:程序开始执行,如果有断点,停在第一个断点处start:程序向下执行一行。(在第一条语句处停止)设置运行参数:setargs可指定运行时参数。(如:setargs1020304050)showargs命令可以查看设置好的运行参数。 二、显示源代码listlinenum:打印第......
  • Laxcus分布式操作系统相比Linux操作系统的优势
    一位微信网友的提问:LAXCUS分布式操作系统和LINUX操作系统相比,有什么优势?答:LAXCUS分布式操作系统做为一种新型的多机操作系统,是操作系统家族的新物种。它最大的特点是聚合能力,能够将海量的物理计算机集合到一起,变成一台物理分散逻辑统一的单台计算机,在此基础上,实现超大规模算力的......
  • 运维 | 如何卸载阿里云盾 | Linux
    运维|如何卸载阿里云盾|Linux官方文档:https://help.aliyun.com/document_detail/68616.htm?spm=a2c4g.11186623.2.7.2537646azwEGcG#concept-cwf-hzc-zdb问题描述最近新购了阿里云的VPS,发现之前的卸载阿里云监控的方法已经失效应该是加了守护,没法直接删除相关文件,提示Op......
  • NO.3 C语言实现贪吃蛇游戏(Linux)
     一、简易说明:实现了初步的游戏模型,可以玩,但有一些细节bug没有解决。用WASD控制方向  二、源代码+头文件1#include<stdio.h>2#include"snake.h"34567intmain(intargc,constchar*argv[])8{91011system("cl......
  • Linux下C语言操作网卡的几个代码实例?特别实用
    前面写了一篇关于网络相关的文章:如何获取当前可用网口。《简简单单教你如何用C语言列举当前所有网口!》那么如何使用C语言直接操作网口?比如读写IP地址、读写MAC地址等。一、原理主要通过系统用socket()、ioctl()、实现intsocket(intdomain,inttype,intprotocol);功能:......
  • Linux常用命令本地查询工具:LinuxStudy 1.0
    最近在学习Linux,上千的命令整理了一下,随用随查,也分享给需要的小伙伴。语言平台为C#framework4.7.1,旧系统可能需要更新平台。程序开源,可关注https://gitee.com/windtrace/linux-study新版本。目前收集了www.linuxcool.comhttps://github.com/jaywcjlove/linux-command两个......
  • linux cp 命令详解
    如何在Linux下拷贝一个目录呢?这好像是再简单不过的问题了。 比如要把/home/usera拷贝到/mnt/temp,首先想到的就是 cp-R/home/usera/*/mnt/temp 但是这样有一个问题,/home/usera下的隐藏文件都不会被拷贝,子目录下的隐藏文件倒是会的。 那如何才是正确的方法呢?有人说用......