我想设置s段的共享内存来容纳一个字符串数组。作为这个数组的一个例子Linux shmget()函数在c + +
string example [] = {“This is”,“An Example”,“of strings”};
然后我尝试调用shmget,这样我就可以保留适当数量的os共享内存。
shmget的(IPC_PRIVATE,整型尺寸(例如),IPC_CREAT); //我希望这创建共享存储器段
我发现这个site它说“关键参数是与相关联的访问值信号量ID“什么是信号量ID,我如何创建一个。
这编译使用g ++ -Wall,但我不知道如何检查,看看它是否有。根据linux中的shm手册,其中IPC_PRIVATE是我应该指定的类型“key_t”的东西。我的想法是我如何识别共享内存的关键,即指定一个字符串作为共享内存名称,或指定一个ID号码。
阅读手册指出,shmget()返回一个“shmid”。同样,尽管什么是shmid,它是一个int,字符串,指针,还是它是一些特殊类型,这是我确定我的共享内存段的方式吗?另外如果shmget()正在返回,我不需要将它分配给某些东西?
如果您可以推荐教程或概述,我会非常感激。除了上面的具体问题之外,我想要一个从fork()命令创建的线程访问共享内存的例子。
我的最终目标是为我的数组中的每个字符串生成一个线程,它将执行一种反转。这只是一个小任务,开始使用共享内存和pthreads,因为我没有找到可以通过的教程。
'shmget()'返回一个'int'(http://www.kernel.org/doc/man-pages/online/pages/man2/shmget.2.html)。所以'shmid'是一个整数。 – 2013-02-23 00:14:55