进程间通信(IPC)的多种方式(一)

2023年 7月 14日 50.7k 0

进程间通信(InterProcess Communication, 简称IPC),是指在不同进程之间交换或传递数据。
以Linux系统为例。

方式一:无名管道(pipe)

无名管道用于从父进程向子进程单向传递数据。
在Linux系统的头文件中,定义了用于开启一个无名管道的函数pipe()
函数原型如下:

int pipe(int* ___pipedes);

这里的pipedes地址,需要传入的实际上是一个2位大小的int型数组地址。我们假设这个数组为pipe_fd[2],那么pipe_fd[0]是管道读取端的文件标识符,pipe_fd[1]是管道写入端的文件标识符。

以下是一个程序示例。在这个示例中,由该程序通过调用fork()函数创建出一个自身的副本,这个副本会作为该程序所属进程的子进程而存在。

#include
#include
int main()
{
// 创建两个管道的文件标识符,分别标识管道的两头
int pipe_fd[2] = {0};
char buffer[35] = {0};
// pid记录由父线程fork出来的子线程的线程ID
pid_t pid = 0;
if(pipe(pipe_fd) < 0) // pipe函数用于开启管道,传入值是管道文件标识符数组,创建成功后两个文件标识符原地传出,1为写,0为读,是单向的
{
std::cout

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论