我正在尝试设置共享内存的 s 段来保存字符串数组。例如这个数组
string example[] = {"This is", "An Example", "of strings"};
然后我尝试调用 shmget 以便我可以保留适当数量的操作系统共享内存。
shmget(IPC_PRIVATE, sizeOf(example), IPC_CREAT);//我希望这会创建共享内存段
我发现这个网站说“关键参数是与信号量 ID 关联的访问值”什么信号量 ID 以及如何创建一个。
这使用 g++ -Wall 编译,但我不知道如何检查它是否有。根据 IPC_PRIVATE 所在的 linux 中的 shm 手册,我应该指定“key_t”类型的内容。我的想法是我如何识别共享内存的关键,即指定一个字符串作为共享内存名称或指定一个 ID 号。
阅读手册指出 shmget() 返回一个“shmid”。同样,虽然什么是 shmid,它是 int、string、pointer 还是某种特殊类型,这就是我识别共享内存段的方式吗?另外,如果 shmget() 正在返回某些东西,我不需要将其分配给某些东西吗?
如果您能推荐一个教程或概述,我将不胜感激。除了上面的具体问题,我想要一个从将由 fork() 命令创建的线程访问共享内存的示例。
我的最终目标是为数组中的每个字符串生成一个线程,该线程将执行某种反转。这只是开始使用共享内存和 pthreads 的一个小任务,因为我还没有找到一个教程来完成。