什么是信号量
信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。
2025年07月01日
Linux下的多进程编程初步
1 引言
对于没有接触过Unix/Linux操作系统的人来说,fork是最难理解的概念之一:它执行一次却返回两个值。fork函数是Unix系统最杰出的成就之一,它是七十年代UNIX早期的开发者经过长期在理论和实践上的艰苦探索后取得的成果,一方面,它使操作系统在进程管理上付出了最小的代价,另一方面,又为程序员提供了一个简洁明了的多进程方法。与DOS和早期的Windows不同,Unix/Linux系统是真正实现多任务操作的系统,可以说,不使用多进程编程,就不能算是真正的Linux环境下编程。
2025年07月01日
速度慢,容量有限(64kB,ulimit -a可以查询的pipe size 指的是一次性写入的大小限制),只有父子进程能通讯 半双工的(即数据只能在一个方向上流动)----(匿名管道)
int pipe(int fd[2]); // 返回值:若成功返回0,失败返回-1
当一个管道建立时,它会创建两个文件描述符:fd[0]为读而打开,fd[1]为写而打开
要关闭管道只需将这两个文件描述符关闭即可。
2025年07月01日
进程间通讯(Inter-Process Communication,简称IPC)是运行在一个系统中的进程之间共享信息和数据的一种机制。在C++中,可以使用多种方法实现进程间通讯,包括管道、信号、共享内存、消息队列、套接字等。
2025年07月01日
面试官问这个问题可能是为了考察候选人对Linux系统中进程间通信(IPC)机制的理解,特别是共享内存的原理和实现。共享内存是一种高效的IPC方式,适用于需要频繁交换大量数据的场景。面试官可能希望候选人不仅了解共享内存的基本概念,还能在实际编程中应用这一技术,并理解其背后的系统调用和内存管理机制。
2025年07月01日
一,共享内存
内核管理一片物理内存,允许不同的进程同时映射,多个进程可以映射同一块内存,被多个进程同时映射的物理内存,即共享内存。
映射物理内存叫挂接,用完以后解除映射叫脱接。
1,共享内存的特点:
优点:是最快的IPC。
缺点:要编程者自己实现对共享内存互斥访问。如何实现?
2025年07月01日
管道,是一种把两个进程之间的标准输入和输出连接的起来的一种通信机制,它是单向数据流,一个进程写入管道的所有数据都由内核定向到另一个进程中,另一个进程就可以从管道中读取数据。
管道可以分为匿名管道和命名管道。通常所说的管道是匿名管道,除非指明命名管道。
在Linux系统中,管道比较常用,如 ls -l | grep string 就使用了管道技术。
2025年07月01日
下图展示了进程间通信的5种方式。
管道是单向字节流,它将一个进程的标准输出连接到另一个进程的标准输入。
消息队列允许一个或多个进程写入消息,消息将由一个或多个读取进程读取。