如何在Linux下的C中的两个子进程之间共享缓冲区?

时间:2016-01-19 15:09:16

标签: c linux memory process share

我希望有一个父进程创建一堆子进程,我希望所有进程在一个缓冲区上运行(执行读写操作)。

澄清一下,“缓冲区”是指一个C字符串(以空字符结尾的字符串),我想要的是......例如,如果“cat”存储在我的缓冲区中,而child0将其修改为“cat-cat” “,child1和child2等也会将缓冲区的内容视为”cat-cat“。

似乎有一个命令,mmap完全符合我的要求,但我在互联网上看到了许多指南,但问题是我很难将我的思维包裹在共享的记忆区域内,所以我真的需要一个具体的例子来说明如何将它用于我需要的东西,我所看到的任何指南似乎都没有正确覆盖它(大多数只覆盖读取访问权限和覆盖写入权限的指南似乎适用于更复杂的情况,因此有复杂的代码,我真的不明白)。因此,如果您要将此标记为重复,请记住这一点。

进一步澄清和简化我的问题...如果我有 $ char * buf $ ...在我的父程序中..我需要编写的代码指令是什么,以便通过编写 $ strcpy(buf,“cat”)$ ...在我的一个子流程中,所有子流程都可以看到更改?

1 个答案:

答案 0 :(得分:2)

如您所料,您可以在00 for hours and minutes之前使用mmap 设置共享内存空间 - 为此目的使用子进程

fork()

现在,这个映射在所有进程之间共享,其中一个修改将反映在其他进程中。