最新 最热

软链接和硬链接

在操作系统级别看存储空间的话,是分为很多的block块,这些block块是分为很多种类的

2024-08-08
17

【进程间通信】mmap共享存储映射

存储映射I/O (Memory-mapped I/O) 使一个磁盘文件与存储空间(内存)中的一个缓冲区相映射。这样的话,当从缓冲区中取数据,就相当于读文件中的相应的字节,而将数据存入缓冲区,则相应的字节就自动写入文件。这样,就可在不使用re...

2024-08-08
17

排序算法

冒泡排序:Bubble sort,也叫做起泡排序,是一种交换性质的排序,基本思想是相邻两条记录进行比较,不符合规则就交换,符合规则不交换。冒泡排序的具体步骤描述如下...

2024-08-08
14

最短路径——Dijkstra算法与Floyd算法

最短路径问题最短路径问题是我们经常会面临的一种决策问题。在图论中,非网图(边没有权值)的最短路径就是两个顶点之间经过边数最少的路径。对于网来说,由于每条边都有权值,所谓的最短路径是指,两个顶点之间经过的边加权之后...

2024-08-08
20

回调函数

函数指针做函数参数是C语言中非常重要的一种语法,函数指针约定了函数的返回值和函数参数,功能开发者只要根据这个约定实现功能函数,就可以通过以函数指针为参数的统一接口进行调用,来使用这个函数的功能,实现了功能开发与...

2024-08-08
14

【Linux进程控制】二、进程控制——fork()系统调用深度刨析

fork()用于创建一个子进程,我们在shell下执行一个命令其实也是通过fork()实现的,fork()是Linux下最基本的一个系统调用。fork()最大的特点就是一次调用,两次返回,两次返回主要是区分父子进程,因为fork()之后将出现两个进程...

2024-08-08
19

【Linux进程控制】三、进程间的资源共享问题

实际上这是printf()函数缓冲区的机制造成的,缓冲区我们在Linux系统调用专题中已经讲过了。在系统调用时,遇到 '/n' 输出行缓冲,我们这里第一个printf()函数中没有 'n' 字符,所以第一个printf()函数...

2024-08-08
16

【Linux进程控制】四、exec函数族——进程替换详解

我们在使用fork()系统调用之后,创建出来的子进程是对父进程的复制,也就是说子进程和父进程执行的是相同的程序,虽然说父子进程可能执行的是不同的代码分支(if else语句),但是程序流程是一样。我们要想在新创建的子进程中执...

2024-08-08
19

【Linux进程控制】五、wait()函数——子进程回收

僵尸进程:子进程结束,父进程没有回收子进程的资源(PCB),这个资源必须要由父进程回收,否则就形成僵尸进程。

2024-08-08
21

【进程间通信】IPC、管道pipe、命名管道FIFO

Linux环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间。任何一个进程的全局变量在另一个进程中都看不到,所以进程和进程之间不能相互访问,要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户...

2024-08-08
24