我的一个项目有一个问题。
我一直在尝试找到一个有据可查的使用共享内存的例子,fork()
但是没有成功。
基本上情况是,当用户启动程序时,我需要在共享内存中存储两个值:current_path(它是一个char *)和file_name(它也是char *)。
根据命令参数,将启动一个新进程fork()
,该进程需要读取和修改共享内存中存储的current_path变量,而file_name变量为只读。
是否有关于共享内存的很好的教程,并带有示例代码(如果可能),您可以将其引导至?
1
您可以考虑使用线程而不是进程。然后,整个内存将共享,而无需任何其他技巧。
—
elomage 2014年
下面的答案讨论了System V IPC机制,
—
乔纳森·莱夫勒
shmget()
等等。以及(aka )的纯mmap()
方法-尽管POSIX未定义。还有POSIX ,用于管理共享内存对象。[…续…]MAP_ANON
MAP_ANONYMOUS
MAP_ANON
shm_open()
shm_close()
[…continuation…]这些具有与System V IPC共享内存相同的优点-共享内存对象可以在创建它的进程的生命周期内保留(直到某些进程执行
—
乔纳森·莱夫勒
shm_unlink()
),而使用mmap()
该机制的机制需要文件并MAP_SHARED
保留数据(并MAP_ANON
排除持久性)。规范的“原理”部分中有一个完整的示例shm_open()
。