- 博客(56)
- 收藏
- 关注
原创 Linux进程信号(三)之信号产生2
本文主要介绍了由软件条件和硬件异常产生的信号及其处理方式。首先,SIGPIPE信号是由软件条件产生的,通常与管道操作相关。软件条件不满足时,操作系统可能通过返回值或信号来反映问题。alarm函数用于设置定时器,定时器到期后会向进程发送SIGALRM信号,默认行为是终止进程。如何设置和处理SIGALRM信号,并探讨了如何实现周期性闹钟功能。硬件异常产生的信号,如除零错误和非法内存访问,模拟异常及其信号处理。信号捕捉的主要目的是让用户了解进程终止的原因,而非解决问题本身等
2025-05-18 19:00:00
531
原创 Linux进程信号(二)之信号产生1
信号在进程中的产生与处理机制。首先,通过终端按键可以产生信号,终止进程并生成Core Dump。通过代码验证,发现SIGKILL和SIGSTOP信号无法被捕捉。Core Dump是进程异常终止时将内存数据保存到磁盘的过程,用于事后调试,但默认关闭以防止磁盘空间被占满。通过ulimit命令可以开启Core Dump功能。此外,文章还介绍了通过kill命令和kill函数向进程发送信号的方法,并实现了自定义的kill命令等
2025-05-18 13:36:53
544
原创 Linux进程信号(一)之信号的入门
Linux进程信号之信号入门:在生活角度信号怎么理解,在操作系统角度信号怎么理解,技术应用角度的信号怎么理解,键盘数据怎么输入给内核的,ctrl+c又是怎么变成信号的,信号的概念,查看系统定义的信号列表,信号的常见处理方式等
2025-05-16 19:00:00
768
原创 Linux进程间通信(六)之System V 消息队列和信号量
Linux进程间通信之System V消息队列:理解消息队列,消息队列的特性方面;System V信号量:先理解进程互斥,信号量的特性方面,理解信号量;System V共享内存、消息队列、信号量三者接口的对比;进程间通信在内核中的数据结构等
2025-05-11 16:00:00
726
原创 Linux进程通信(五)之 System V共享内存
Linux进程间通信之System V共享内存:System V共享内存的原理,共享内存的数据结构,共享内存的函数接口(shmget/shmat/shmdt/shmctl),理解key,共享内存的实例代码,结果的演示与理解,共享内存的特性,以及扩展代码等。
2025-05-11 09:05:17
616
原创 Linux进程间通信(四)之补充【日志】
Linux进程间通信之补充【日志】:日志的基础要求是什么,日志等级有什么,怎么实现日志:补充可变参数的用法,可变参数的原理是什么,可变参数的应用等,如何获取时间,日志的应用等
2025-05-10 19:00:00
259
原创 Linux进程间通信(三)之管道2【命名管道】
Linux进程间通信之命名管道:什么是命名管道?为什么要使用命名管道?怎么使用命名管道?命名管道和匿名管道之间的区别是什么?对于命名管道现象的理解,命名管道的打开规则,使用命名管道进行通信的实例代码等。
2025-05-10 10:45:00
510
原创 Linux进程间通信(二)之管道1【匿名管道】
Linux进程间通信之【匿名管道】:什么是管道,创建匿名管道(使用fork共享管道的原理),站在文件描述符的角度和内核角度理解管道的本质,如何让创建管道,如何通信,创建管道的接口,通信的接口,管道的特点,管道通信中出现的四种情况,管道的读写规则,匿名管道的应用场景等等。
2025-05-03 18:30:00
944
原创 Linux进程间通信(一)之进程间通信介绍
Linux进程间通信之进程间通信介绍:进程间通信是什么?为什么要进行进程间通信?怎么进行进程间通信?进程间通信的目的,进程间通信的发展,进程间通信分类等内容。
2025-05-03 09:00:00
359
原创 Linux基础IO(十一)之动态库(基础IO的最后一篇啦!)
Linux基础IO之动态库:如何生成动态库(shared fPIC),使用动态库,解决动态库加载找不到路径问题,动态库的现象与事实(需要加载、共享性),动态库如何被加载的,进程地址空间第二讲(与动态库结合更加深刻的理解地址空间)等。
2025-04-25 19:00:00
727
原创 Linux基础IO(十)之静态库(后续出动态库)
Linux基础IO之静态库:动静态库的概念(静态库.a 动态库.so,静态库对应静态链接,动态库对应动态链接),库的搜索路径,生成静态库(自己编写一个简易静态库),静态库的原理,使用静态库,使用过程中的问题及解决方法(报错的原因及原理),静态库的结论等。
2025-04-25 11:37:06
758
原创 Linux基础IO(九)之软链接
Linux基础IO之软链接:软链接的原理,软链接是一个独立的文件,具有独立的inode,添加软链接不影响硬链接数,软链接数据块里面记录的是指向文件的路径,删除软链接对原(目标)文件没有影响,但是删除原(目标)文件软链接就会出问题,软链接应用场景(快捷方式),acm的概念(三个时间)等。
2025-04-19 19:30:00
176
原创 Linux基础IO(八)之硬链接
Linux基础IO之硬链接:硬链接不是独立的文件!(没有独立的inode),硬链接本质(文件名 与 指向文件的inode的编号 的映射关系,可以理解为取别名),ll指令第二个数字就是硬链接数,硬链接的应用场景(路径定位、目录切换),目录文件默认硬连接数是2)为什么?硬链接不允许给目录定义(因为会出现系统级bug),系统不会队.和..搜索等。
2025-04-19 09:18:23
269
原创 Linux基础IO(七)之理解文件系统
Linux基础IO之理解文件系统:先对一块内存分区然后分组,分组完就是一个文件系统:文件系统内容有Block Group,Super Block,inode table、GDT、Block Bitmap和inode Bitmap等,本文章详细讲述了以上内容的概念作用和彼此之间的联系等,查看inode的命令:ls -li,stat可以查看文件更多内容,问题描述了:新建文件、删除文件、查找文件、修改文件,操作系统需要做什么等,重新深刻理解了目录等。
2025-04-14 19:00:00
774
原创 Linux基础IO(六)之文件系统 -- 认识理解硬件(磁盘)
Linux基础io之文件系统:回忆之前的知识(谈在磁盘中的文件即没有被打开的文件)和文件=内容+属性(两者是分开存储的),认识磁盘:1.磁盘的物理结构(计算机中唯一的机械设备)和 与SSD、与混盘的区别,物理结构有盘片、磁头、马达、磁头停泊区和与电脑连接的连接口等,磁盘存储的原理,磁盘存储与内存的区别。2.磁盘的存储结构,磁片(磁头)、磁道、扇区,扇区是访问磁盘的最小单元,CHS寻址方式等.3.磁盘的抽象结构:可以看作线性结构,LBA地址和CHS寻址的转化。回归硬件-磁盘如何被访问等。
2025-04-14 10:19:41
606
原创 Linux基础IO(五)之用户缓冲区
Linux基础IO之缓冲区:C语言中的FILE内部封装了fd文件描述符,一般C库函数写入文件时是全缓冲的,而写入显示器是行缓冲。当发生重定向到普通文件时,数据的缓冲方式由行缓冲变成了全缓冲。缓冲区当进程退出时一般也会刷新。FILE里面还有对应打开的文件的缓冲区字段和维护信息,初步实现用户级缓冲区,c语言跨平台型等。
2025-04-10 20:45:00
1090
原创 Linux基础IO(四)之重定向
Linux基础IO之文件重定向:重定向的本质,重定向分为:输出重定向、输入重定向追加重定向,使用dup2来实现文件的重定向,dup2如何使用(参数的含义),用系统调用实现输入重定向、输出重定向、追加重定向,shell的补充(增加了重定向的命令),1号文件描述符 vs 2号文件描述符有什么区别,如何理解Linux中“一切皆文件”等。
2025-04-10 15:59:36
739
原创 Linux基础IO(三)之访问文件的本质
Linux基础IO之访问文件的本质,文件描述符的本质(数组下标),c语言中的FILE中必定封装了文件描述符fd,文件描述符中0,1,2分别是标准输入0, 标准输出1, 标准错误2对应的物理设备一般是:键盘,显示器,显示器,对于该结论的验证,以及文件描述符的分配规则等
2025-04-09 19:30:00
303
原创 Linux基础IO(二)之文件系统调用
Linux基础IO之文件系统调用,Linux中常见的系统调用(open write read close lseek等),c语言的文集读写接口一定封装了系统调用接口,细谈打开文件open,关闭文件close,写入文件write,读取文件read,c语言文件接口调用的底层详解等
2025-04-09 15:07:55
673
原创 Linux基础IO(一)之回顾C语言文件接口
Linux基础IO之共识原理(文件=内容+属性,文件分为打开的文件与没有打开的文件,细谈打开的文件和没有被打开的文件),回顾c语言文件接口(访问磁盘、键盘、显示器等的过程都是IO),新建目录新建在哪里,修改文件工作目录等。打开文件的方式(读,写,追加等),C语言会默认打开三个输入输出流(标准输入流、标准输出流、标准错误)等内容。
2025-04-07 19:30:00
785
原创 Linux进程控制(五)之做一个简易的shell
制作一个简易的Shell(shell是操作系统的一层外壳程序,帮我们用户执行指令, 获取到指令后,交给操作系统,操作系统执行完后,把执行结果通过shell交给用户。shell大部分执行命令时,要创建子进程(fork)。shell/bash本身也是一个进程,执行指令的时候,本质就是自己创建子进程执行的。)制作Shell所用的函数、系统调用等预备知识,制作Shell的代码实现、运行结果及最后的结论等
2025-04-07 11:09:51
933
原创 Linux进程控制(四)之进程程序替换
Linux进程程序替换:概念、单进程版程序替换,替换的原理(代码和数据的替换),多进程版程序替换(数据代码写时拷贝),替换六大(七大)函数,函数的解释,小知识(表头中有程序入口的地址),命名理解(l,v,p,e),六大函数的代码体现,7大函数的关系等。
2025-03-22 21:00:00
1183
原创 Linux进程控制(三)之进程等待
Linux进程等待:概念(是什么),必要性(为什么),如何等待进程【等待进程的方法】(怎么做),僵尸进程-内存泄露,wait等待、waitpid等待回收僵尸进程,循环等待,waitpid的参数如何理解,获取子进程status,进程终止和退出码的原理,宏操作、进程等待的原理,进程阻塞等待、进程非阻塞等待,非阻塞轮询等。
2025-03-22 15:46:25
582
原创 Linux进程控制(二)之进程终止
Linux进程终止:进场退出的场景(三种),常见的退出方法(return,exit,_exit),main函数的返回值-退出码(0代表正确),获得退出码的方法,自己设计退出码体系,exit和_exit的区别及原理,缓冲区在哪里等。
2025-03-18 18:30:00
1804
原创 Linux进程控制(一)之进程创建
进程创建:fork函数的初识(创建子进程),fork函数的返回值(子进程返回值0,父进程返回值为子进程的pid),写时拷贝(原理),fork常规用法(父子进程执行一样的代码),fork调用失败的原因(进程数超过了限制)等
2025-03-18 12:42:01
696
原创 Linux进程概念(六)之程序地址空间
程序地址空间:研究背景,程序地址空间的回顾(分布、堆栈相对而生),进程地址空间(分页&&虚拟地址空间),回答历史核心问题(fork),地址空间究竟是什么,如何理解地址空间上的区域划分,进程概念进一步理解,为什么要有地址空间(意义),对页表的深层理解,批量化注释、去注释等。
2025-03-11 19:15:00
1142
原创 Linux进程概念(五)之环境变量
环境变量的基本概念,常见的环境变量:PATH,查看环境变量的方法,测试HOME,和环境变量相关的命令,命令行参数(本地变量&&内建命令)、环境变量的组织方式,通过代码获取环境变量,通过系统调用获取或者设置环境变量等。
2025-03-11 12:40:13
857
原创 Linux进程概念(四)之进程优先级
进程优先级:基本概念,优先级PRI和权限,优先级PRI vs nice值NI,调整进程优先级,查看优先级命令,位图与优先级,调度算法,其他概念:竞争性、独立性、并行、并发、进程切换and时间片、进程的上下文,切换上下文等。
2025-03-10 10:31:57
922
原创 Linux进程概念(三)之进程状态
操作系统进程状态:运行状态、阻塞状态、阻塞挂起状态等,Linux中的状态:R(running)运行,S(sleeping)阻塞,D(disk sleep),T(stopped),t(tracing stop),X(dead)死亡,Z(zombie)僵尸状态等,查看进程,孤儿进程等
2025-03-10 10:20:12
715
原创 Linux进程概念(二)
Linux进程、CPU、PCB结构体、task_struct结构体对象、先描述再组织、task_struct内容:标识符、状态、优先级、程序计数器、内存指针、上下文数据、io状态信息、记账信息,如何查看进程、getpid、getppid、fork和执行流、父子代码共享等。
2025-03-09 23:22:45
971
原创 Linux进程概念(一)
硬件、软件、冯诺依曼体系结构、硬件存储和效率、存储器、CPU、操作系统、外部设备、设计操作系统的目的、操作系统如何管理、系统调用和库函数调用,底层硬件-软件驱动程序-操作系统-系统调用接口等。
2025-03-09 23:07:46
906
原创 Linux环境基础开发工具的使用(三)
Linux项目自动化构建工具-make/makefile 依赖关系和依赖方法 makefile的自动化推导 使用git命令行 gitee github
2025-02-20 21:59:03
850
2
原创 Linux环境基础开发工具的使用(二)
Linux编译器-gcc/g++ 预处理 编译 汇编 链接(动静态链接) 函数库 Linux Linux调试器-gdb gdb命令
2025-02-20 21:43:28
1037
原创 Linux环境基础开发工具的使用(一)
Linux软件管理器yum、Linux编辑器vim、vim的三种模式切换、vim的基本概念、基本操作、命令集、简单的vim配置
2025-02-18 22:13:04
1023
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人