
Linux
文章平均质量分 93
记录Linux学习笔记
大筒木老辈子
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux笔记---System V共享内存
System V共享内存是一种在Linux系统中用于进程间通信的机制。顾名思义,就是申请一段可供多个进程共享的内存,以用于进程间通信,相对于管道机制要更加直接。原创 2025-05-10 15:04:54 · 1307 阅读 · 11 评论 -
Linux笔记---进程间通信:管道
是进程间通信(IPC)的一种基础机制,主要用于在具有亲缘关系的进程(如父子进程、兄弟进程)之间传递数据,其核心特性是通过内核缓冲区实现单向或半双工的数据传输。管道是轻量级且高效的进程间通信方式,适用于简单的数据流场景,但其单向性和容量限制使其不适合复杂需求。命名管道扩展了应用范围,但需注意文件系统的依赖。原创 2025-04-23 22:16:32 · 1414 阅读 · 18 评论 -
Linux笔记---动静态库(使用篇)
-I] :指定头文件所在目录。[-L]:指定库文件所在路径。[-l]:指定要链接的库。[-shared]:生成动态库。[-fPIC]:产生位置无关码。[-static]:使用静态链接。静态库使用ar命令进行打包:ar -rc lib[库名].a [目标文件s]将静态库与用户目标文件一起编译即可生成可执行程序。原创 2025-03-26 17:26:05 · 1743 阅读 · 22 评论 -
Linux笔记---动静态库(原理篇)
动静态库文件的构成是什么样的呢?或者说二者的内容是什么?实际上,可执行文件,目标文件,静态库文件,动态库文件都是使用ELF文件格式进行组织的。ELF(Executable and Linkable Format)文件格式是Unix系统及其衍生系统中广泛使用的可执行文件、共享库和核心转储的二进制文件格式。ELF头(ELF header):位于文件的开始位置,主要目的是定位文件的其他部分。程序头表(Program header table):列举了所有有效的段(segments)和它们的属性。原创 2025-04-16 20:30:36 · 1139 阅读 · 12 评论 -
Linux笔记---文件系统软件部分
从这部分我们可以看出为什么 数据写入很慢,而删除却很快。因为删除数据只需要修改对应的标志信息置即可(如将inode Bitmap 和 Block Bitmap对应位置为0)。由此我们又能大概猜到回收站或数据恢复技术的原理了,只要赶在数据被覆盖之前,找到被删除数据对应的原inode和数据块即可恢复。但如果新的数据被写入到了这些存储空间那就无能为力了。所以,当重要的数据被误删时,尽可能什么都不做,赶在数据被覆盖之前交由专业人士进行恢复。原创 2025-03-22 16:24:23 · 6214 阅读 · 22 评论 -
Linux笔记---文件系统硬件部分
文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法。原创 2025-03-13 17:37:33 · 1382 阅读 · 28 评论 -
Linux笔记---环境变量
环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,是用于存储系统和程序运行时所需的配置信息的变量。这些变量可以在shell中设置,并且可以被程序和脚本访问。环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性。如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。原创 2024-11-25 20:32:11 · 1024 阅读 · 2 评论 -
Linux笔记---自定义shell
该自定义shell并没有任何实用价值,一是因为其功能并不完善,二是因为其是建立在bash的基础之上进行的编写的成果(初始环境变量取自bash),仅具有学习价值。为了贴近真实的 shell 程序开发,我们的代码完全用C语言完成。本文通过完成一个自定义shell小项目的方式,对前面学习的知识做一个简单的总结,帮助读者深入理解有关概念(子进程,进程调度,环境变量……)。原创 2025-03-08 15:16:31 · 6549 阅读 · 26 评论 -
Linux笔记---进程:进程等待
进程等待是指父进程通过系统调用wait或waitpid来对子进程进行状态检测与回收的功能。当子进程退出时,如果父进程不读取子进程的退出状态,子进程就会成为僵尸进程,造成内存泄漏的问题。因此,父进程需要调用wait或者waitpid确认子进程的退出信息以回收僵尸进程的资源以防止内存泄漏。原创 2024-12-01 21:35:29 · 943 阅读 · 12 评论 -
Linux笔记---一切皆文件
一切皆文件”是 Linux 对系统资源的高度抽象,通过文件接口屏蔽底层差异,提供了简洁、一致的操作方式。这种设计降低了系统复杂性,使得工具、脚本和应用程序能够以统一模式处理多样化资源,是 Linux 强大灵活性的重要基石。简单来说,在Linux操作系统中,所有的资源(包括普通文件(文本、二进制文件等)、目录、设备(如磁盘、键盘)、进程信息、网络套接字、管道等)都被抽象为了文件。在用户层面上,我们可以通过对对应的文件进行操作,进而完成对这些资源的操作。原创 2025-03-01 15:10:28 · 753 阅读 · 0 评论 -
Linux笔记---进程:进程终止
exit函数和exit函数的主要区别在于_exit函数不会进行任何清理操作,而exit函数会执行必要的资源清理操作,确保程序能够优雅地终止。在实际编程中,应根据具体情况选择使用哪个函数。如果需要快速终止程序,不关心资源清理,可以使用_exit函数;如果需要在程序终止前进行一些清理工作,应该使用exit函数。原创 2024-12-01 21:35:14 · 745 阅读 · 13 评论 -
Linux笔记---进程:进程地址空间
Linux虚拟地址空间是操作系统为每个进程提供的一组虚拟地址,这些地址在进程看来是连续的,但实际上它们会被映射到物理内存的不同位置。虚拟地址空间的目的是使每个进程都认为自己独占了整个内存,从而简化内存管理和提高安全性。通过页表和MMU的配合,操作系统能够有效地管理和保护内存资源,同时提供了灵活的内存分配和共享机制。因为有地址空间的存在,所以我们在C、C++语言上new, malloc空间的时候,其实是在地址空间上申请的,物理内存可以甚至一个字节都不给你。原创 2024-11-29 16:12:44 · 1474 阅读 · 20 评论 -
Linux笔记---缓冲区
在计算机系统中,缓冲区(Buffer) 是一种临时存储数据的区域,主要用于协调不同速度或不同时序的组件之间的数据传输,以提高效率并减少资源冲突。它是系统设计中的重要概念,尤其在I/O操作、网络通信、硬件交互等领域广泛应用。原创 2025-03-01 17:14:06 · 998 阅读 · 10 评论 -
Linux笔记---系统文件I/O
函数是一个用于打开或创建文件的系统调用,C语言的fopen函数就是对该函数的封装。pathnameflagsmodeflagsO_CREATclose函数对应的自然就是fclose函数,将open函数的返回值作为参数传入即可关闭文件,就不过多解释了,重要的是open函数的使用。原创 2024-12-04 17:32:59 · 1055 阅读 · 0 评论 -
Linux笔记---进程:进程替换
进程替换是指在一个正在运行的进程中,用一个新的程序替换当前进程的代码和数据,使得进程开始执行新的程序,而不是原来的程序。这种技术通常用于在不创建新进程的情况下,改变进程的行为。我们之前谈到过fork函数,这个函数可以启动一个子进程,子进程继承了父进程的代码和数据。在谈到进程替换之前,我们只能通过判断fork函数的返回值id来区分父子进程,并让二者运行不同的分支。而利用进程替换技术,我们可以将子进程的代码数据完全替换为另一个程序,实现我们所期望的,父子进程完全独立为两个不同的进程。原创 2024-12-04 17:32:35 · 1205 阅读 · 20 评论 -
Linux笔记---Makefile的简单用法
当然,不是C语言的那个宏定义,但是二者十分相似,例如:此时,"SRC" 就代表了所需源文件的集合,定义的符号需要放到 "$()" 中才能使用。在指令部分,也可用"$@" 代表目标,"$^" 代表所依赖的文件。原创 2024-10-26 15:53:02 · 1270 阅读 · 10 评论 -
Linux笔记---Linux权限理解
在Linux下,多个用户可以同时登录一台主机。用ls -l指令可以看到如下的文件属性:这些文件属性表示的含义如下图:所属用户即拥有者,所属用户组即所属组。例如上图中,所有文件的拥有者和所属组都是root。除了这两种人以外的所有用户都是other,所以不需要记录other。原创 2024-09-27 19:49:36 · 1054 阅读 · 23 评论 -
Linux笔记---vim的使用
Vim是一款功能强大的文本编辑器,它起源于Unix系统的vi编辑器,并在其基础上进行了许多改进和增强。Vim以其高效的键盘操作、高度的可定制性和强大的文本处理能力而闻名,尤其受程序员和系统管理员的欢迎。Vim支持多种模式,包括普通模式、插入模式、末行(底行/命令)模式、替换模式和可视模式等,每个模式都有其特定的功能和操作方式。上面的5种比较常用,而其中最重要的就是普通,插入,末行三个模式。下面,我们就逐个介绍这些模式的用处和使用方式。原创 2024-10-18 15:39:38 · 1478 阅读 · 28 评论 -
Linux笔记---简单指令
博主使用的是华为云服务器+xshell终端的方式学习的,因为据说这样的方式比较接近以后的工作环境。其中云服务器安装的是Ubuntu操作系统(以Linux为内核,适合新手学习Linux的一个版本)这里的云服务器不一定使用华为的,但是我在货比三家之后发现华为最便宜的一款服务器是能找到的服务器中最便宜的。我们作为初学者,选取云服务器时只需要考虑最便宜的即可。华为的云服务器是自带远程终端的,但是延迟比较高,还是建议下载xshell终端来进行远程链接。原创 2024-09-21 10:49:30 · 1087 阅读 · 21 评论