![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 86
燕麦冲冲冲
用心搞好每一篇博客~
展开
-
进程、环境变量和命令行参数
这是一篇关于进程特性、环境变量和命令行参数的博客,详细且生动地讲解了相关的知识,并且举出了基本的例子方便您更好理解原创 2023-03-30 14:48:47 · 627 阅读 · 7 评论 -
Linux软硬链接和动静态库详解
软硬链接🔗软链接的建立显示出inode软链接就是一个普通文件,有自己独立的inode,类似于一个桌面上的快捷方式。保存的是指向所链接文件的路径。硬链接的建立硬链接拥有与链接文件相同的inode,没有自己独立的inode,类似C++的引用&(别名)。本质是在该目录的数据块中创建了硬链接名与inode的映射关系,并没有创建新文件。第三列数字代表的是硬链接数,可以发现普通文件也至少会有一个,是当前目录的数据块中存放了一组文件名与inode的映射关系。为什么目录硬链接数默认就是2呢?原创 2022-05-11 20:49:41 · 780 阅读 · 1 评论 -
Linux文件系统与基础IO
文件的宏观理解1⃣️文件在哪里呢?“狭义”上在磁盘,“广义”上一切皆文件。主要研究“狭义”,磁盘为外设,那么对文件的所有操作,本质都是对外设的输入输出,简称IO2⃣️文件是什么?空文件占不占用磁盘空间?依旧占用。文件 = 属性 + 内容所有的文件操作,无外乎就是两种操作,对属性和对内容。3⃣️从系统角度看内存文件操作代码-》可执行程序-〉从磁盘加载到内存-》变成进程对文件的操作,本质都是进程对文件的操作!C语言提供的对文件操作接口是用户层的,真正起作用的是系统调用接口一些c文件接口原创 2022-05-07 08:26:23 · 198 阅读 · 0 评论 -
进程控制详解
进程控制进程创建1⃣️命令行启动命令(程序、指令等)。2⃣️通过自身程序fork出子进程。进程调用fork,内核分配新的内存块和内核数据结构给子进程,将父进程部分数据结构拷贝至子进程,添加子进程到系统进程列表中,fork返回,调度器开始调度。创建子进程,本质是系统多了一个进程,本质是多了一套进程相关的数据结构。(1)为什么fork有两个返回值?返回两次?(2)一个变量里面,怎么会有两个不同的值?从而让父子进入不同的业务逻辑fork执行完业务逻辑时返回时,已经创建好子进程了,又需要一个变量来接原创 2022-05-05 17:39:27 · 687 阅读 · 0 评论 -
进程的特性&环境变量&命令行参数
环境变量与命令行参数在Linux系统中,标识用户并不是通过用户名,而是uid。(可以类比QQ号码和QQ昵称)原因是计算机更善于处理数字而不是字符。进程的特性并行:多个进程在多个cpu下同时运行。并发:多个进程在一个cpu下采用进程切换的方式,在一段时间内使得多个进程推进。(进程切换时,保存进程上下文,每个进程开始在cpu上运行时,必须恢复上下文)独立性:多进程运行,独享各种资源并互不干扰。(fork出子进程,代码共享,数据各自私有一份)也是操作系统设计进程的一个原则。利用僵尸进程验证独立性原创 2022-04-30 19:19:34 · 248 阅读 · 0 评论 -
进程地址空间
进程地址空间曾经所学的c/c++内存分布空间并不是真正的内存,而是进程地址空间。进程地址空间究竟是什么?1、创建子进程让子进程修改全局数据,观察父子进程中全局数据的差别。 1 #include<stdio.h> 2 #include<unistd.h> 3 4 int g_val = 0; 5 6 int main() 7 { 8 printf("the g_val is %d\n", g_val); 9 pid_t id =原创 2022-04-30 19:08:44 · 267 阅读 · 0 评论 -
如何调试Linux下vim编辑器写的代码?含实用快捷指令make和Makefile
Linux的gdb调试Linux中,程序默认生成的可执行程序是:release版本。默认动态链接,使用动态库。gdb 文件名 -g如上可以改为debug版本,进行调试。release和debug版本的区别1、debug可以调试,release不可调试。2、debug在生成程序的时候会加入调试信息,而release不会。为啥会有release和debug呢?项目开展的流程图:测试团队对高效的自动化调试的需求,便有了测试开发这个方向。常用命令gdb file -g l/list原创 2021-11-13 15:28:58 · 2195 阅读 · 2 评论