![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
文件操作
文章平均质量分 96
Dio夹心小面包
"放弃学习的我们是没有翅膀的雄鹰 不会理智的我们是根茎腐烂的大树"
展开
-
『 Linux 』简单日志插件
日志(log)是一种记录和存储系统运行状态,事件,和操作历史的文件和数据库,这些记录通常以时间顺序排列且详细记录系统中发生的各种活动;系统日志记录操作系统级别的事件,如启动,关机,错误和警告等;记录应用程序运行过程中的事件,如用户操作,错误,状态变更等;安全日志记录系统和应用程序的安全相关事件,如登录尝试,权限变更等;问题诊断和故障排查日志可以帮助系统管理员和开发人员诊断和解决问题;系统监控和维护通过分析日志,管理员可以监控系统的运行状态并且识别潜在的问题和异常;安全审计和合规性。原创 2024-07-17 18:38:58 · 892 阅读 · 0 评论 -
『 Linux 』命名管道
两个毫不相关的进程,其中一个进程用来创建管道文件并维护管道文件,同时负责接收另一个进程向管道文件内写入的数据;命名管道不占用实际磁盘空间,只是用于传输,不存在刷盘(写入磁盘)的动作,故实际上使用的也是该文件的内核缓冲区;创建一个管道类用于管理管道文件,即利用其构造函数创建管道文件,在退出后析构函数释放对应管道文件;当管道内的数据没有被读端读取时写端会进行阻塞等待读端将当前管道内的数据进行读取;模拟实现服务端,用于管理命名管道文件,接收管道内文件并进行打印;命名管道是管道的一种,数据流向为单向故被称为管道;原创 2024-07-15 19:14:59 · 915 阅读 · 0 评论 -
『 Linux 』 进程间通信概述
进程间通信(IPC)指的是在操作系统重,允许两个或者多个进程之间传递信息或者数据的机制;进程是操作系统重独立运行的实体,即进程间具有独立性,存在自己的地址空间;因此进程间默认无法直接访问彼此的内存空间,其通信成本会较高;IPC提供一种方式使得互相独立的进程能够交换数据并进行通信和数据共享;原创 2024-06-20 16:45:52 · 735 阅读 · 0 评论 -
『 Linux 』动态库的加载
动态库和静态库是软件开发中两种主要的代码库链接方式;其中动态库在程序运行时被加载并允许代码在物理内存中只有一份拷贝而被多个进程共享从而减少系统资源的消耗;相比之下,静态库在程序编译时被整合进可执行文件;导致每个程序都包含了一份库的副本,增加了程序的大小和内存占用;动态库的管理依赖于操作系统中的结构体,如link_map;它记录了库的加载地址,名称等信息,确保动态链接和库间依赖关系的正确处理;通过高效地管理和加载动态库,系统能够提高内存使用效率,简化库的更新过程,并支持跨进程的库共享;原创 2024-06-13 17:39:18 · 796 阅读 · 0 评论 -
『 Linux 』动静态库的创建与使用 ( 万字纯干货 )
在某些情况下,如果用户只提供了静态库而没有提供对应的动态库,链接器将不得不使用静态链接.但这也取决于编译时的具体指令和可用的库;同样类似于标准库的库文件也已经在系统中被安装,若是没有指定目录则会去默认路径(当前路径或是系统安装库文件的目录)中查找;静态库在编译时已经被链接到可执行文件中,故运行时不需要动态加载库文件,因此启动速度较快,运行时性能较好;静态库在编译时被嵌入到应用程序中,因此生成的可执行文件不依赖于外部的库文件;目标用于删除所有编译生成的文件,包括静态库,动态库,目标文件以及发布后的。原创 2024-06-13 00:34:38 · 740 阅读 · 0 评论 -
『 Linux 』内存管理与文件系统
页是虚拟内存中的一个固定大小的块,时进程地址空间中的最小单位;原创 2024-06-06 17:23:52 · 955 阅读 · 0 评论 -
『 Linux 』目录与软硬链接 (万字详解)
根目录也是一个目录,也是一个文件,在文件系统中有自己的Inode编号和属性,通常在创建一个文件系统时会创建对应的根目录,并在其InodeTable表中维护根目录的Inode信息;如果在Dentry缓存中找到目录项,文件系统可以直接使用缓存中的Inode编号找到对应的Inode信息从而无需从磁盘中重新依次读取目录项;在目标目录中创建一个新的目录项(dentry),将新文件的名称与分配的inode关联起来;目录是文件,其Inode中的指针数组中数组中指针指向的数据块中存放的数据为目录项;原创 2024-06-04 15:33:45 · 934 阅读 · 2 评论 -
『 Linux 』文件系统
文件元数据主要保存在Inode中。Inode,也被称为索引节点,是Unix和类Unix操作系统中的一种数据结构,它用于存储有关文件系统上的文件的元数据,但不包含文件名或数据内容。每个文件都有一个与之关联的Inode,包含了文件的大小、文件的所有者和权限信息、文件的创建、访问和修改时间等信息。原创 2024-06-01 19:21:39 · 1077 阅读 · 1 评论 -
『 Linux 』缓冲区(万字)
缓冲区(Buffer),顾名思义就是一块可以用于缓存的空间;也可以说实际上缓冲区是一种临时存储区域,一般用于在数据传输过程中对数据的缓存;缓冲区的主要目的是协调数据产生者和消费者之间的速度差异以提高系统的效率和性能;那么具体什么是缓冲区?存在几个例子:下文中所出现的例子都将使用两种方式(直接运行 ,重定向至文件当中)以便于区分两种情况的不同之处;[例1]// C标准库接口// 系统调用接口return 0;在这段代码当中分别用了C标准库接口与系统调用接口分别对不同的massage。原创 2024-05-31 17:10:04 · 759 阅读 · 0 评论 -
『 Linux 』“ 一切皆文件 “
同时,通过设备文件和文件操作表的抽象,使得不同的硬件设备能以一致的接口暴露给用户空间的程序,大大提高了程序的可移植性;驱动程序是系统内核的一部分,是一种较为特殊的软件,负责管理和控制特定的硬件设备,当用户空间的程序通过设备文件发起请求时,相应的驱动程序会接收到这个请求并执行必要的操作以与硬件设备进行交互;目录当中的特殊文件,代表系统中的硬件设备,这些文件为用户空间的程序提供了一个接口,用户可以通过这些接口程序给驱动程序发送请求,从而间接的调用硬件;操作系统会打开请求的设备文件;原创 2024-05-16 16:56:11 · 1017 阅读 · 0 评论 -
『 Linux 』重定向 Redirect(万字)
重定向是计算机编程和操作系统重的一个概念;一般指的是改变数据流的方向或将程序的输出从一个位置转移到另一个方式;一般在shell当中的重定向有标准输出重定向标准错误重定向标准输入重定向在博客『 Linux 』进程替换( Process replacement ) 及 简单Shell的实现(万字)当中实现了一个简易的Shell;但总体来说,这个简易的Shell写的并不好;无论是从代码结构,可读性,拓展性等等;1024// 命令行缓冲区大小3233// 获取环境变量为标识符/**/原创 2024-05-14 15:41:08 · 467 阅读 · 1 评论 -
『 Linux 』基础IO/文件IO (万字)
在计算机当中,I/O即为输入和输出的英文缩写版,;而在计算机当中,任何与输入输出有关的操作都可以被称作为IO,例如简单的对于设备上的将信息以打印的方式在显示屏(终端)中进入显示或者是在文件的读写操作都可以被看成是一种IO行为;一般在计算机系统当中,IO基于硬件层面的IO基于软件层面的IO网络IO设备IO内存IO标准输入/输出数据库IO进程间通信本篇博客以CentOS7.6为例。原创 2024-05-07 13:32:43 · 822 阅读 · 1 评论 -
『 Linux 』进程替换( Process replacement ) 及 简单Shell的实现(万字)
而在进程替换当中可以完美的对上面的理论进行一个反驳,即并不是每个程序加载到内存当中都会新生成一个对应的进程;以该图为例,该图中一个正在执行的进程经过了进程替换,将磁盘中的程序的代码和数据加载到了被替换的进程对应的。表示要执行的可执行文件的名称,该参数可以是一个简单的文件名而不需要包含完整的路径;该函数的功能为执行指定的路径下的可执行文件,并用传递给它的参数替换原有的程序;表示要执行的可执行文件的名称,它可以是一个简单的文件名而不需要包含完整的路径;原创 2024-03-14 20:30:20 · 1119 阅读 · 3 评论 -
『 Linux 』Process Control进程控制(万字)
进程控制是一种在操作系统上对进程进行管理和调度的一个过程;这包括创建进程,终止进程,等待进程,暂停和恢复进程,进程间的通信和调度进程等待;在之前关于Linux的内容中谈论了大量的关于进程的内容;本文将重点对于基础进程控制进行一定的讲解;原创 2024-03-07 23:40:51 · 990 阅读 · 0 评论 -
【文件操作】c语言文件操作(上)
在程序运行中,大部分的数据都在内存中被运行或者被调用,若是程序结束运行后,程序在内存中申请的内存空间就会被释放或者被操作系统回收;但是往往许多程序需要将数据保存,例如游戏存档,通讯录…;但是有什么方法能将内存中的数据保存起来呢?若是想将数据存储起来,可以使用文件将数据保存。原创 2023-04-06 23:18:37 · 240 阅读 · 0 评论