gpt4 book ai didi

c - 如何将列表的节点存储到共享内存中

转载 作者:行者123 更新时间:2023-11-30 16:19:26 25 4
gpt4 key购买 nike

我试图让许多客户端通过许多终端相互通信。我的程序中有分支,我创建管道,以便客户端可以从/向其他客户端读取/写入。因为我创建了许多进程,所以我需要共享内存存储一些信息,特别是我想存储每个 child 创建的节点。我该怎么做?

这是我的结构:

typedef struct client{
char *numofclient;
struct client *nextclient;
}client;

最佳答案

在 fork 任何内容之前,使用 mmap 创建共享内存区域。阅读手册页并使用共享标志。如果在 Windows 上则不同,所以查找 VirtualAlloc,当然你不能 fork。

您需要一个用于共享内存的内存分配器。这非常简单:只需增加一个 char 指针来进行分配,并且永远不会释放任何东西。或者它可以像您想要的那样复杂。您也许可以在线找到图书馆。

如果您需要互斥锁,请在共享内存区域中创建一个互斥锁,并确保使用共享互斥锁的标志。

由于您正在 fork ,因此您可以使用指针,因为共享内存将在每个进程副本中保持映射到位。否则,您需要使用距 map 起点的偏移量。

关于c - 如何将列表的节点存储到共享内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55623581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com