在*inux编程中创建共享内存的函数将关键字作为其参数之一。
这个键的意思是什么?我该如何使用它呢?
编辑:
非共享内存id
发布于 2010-05-11 21:00:18
它只是一个System V IPC (进程间通信)键,因此不同的进程可以创建或附加到相同的共享内存块。密钥通常是使用ftok()创建的,它将完全指定的文件名和项目ID转换为可用的密钥。
由于应用程序通常可以在其所有不同进程中使用相同的文件名(文件名通常是与您的应用程序关联的配置文件),因此每个不同的进程都会获得相同的密钥(或者,如果您使用项目ID指定多个共享内存段,则更有可能是相同的一组密钥)。
例如,我们曾经有一个应用程序,它使用由lex/yacc代码处理的配置文件,因此我们只对每个不同的共享内存块使用该路径名和一个项目ID (根据进程的用途,有三个或四个)。这实际上很有意义,因为它是存储在共享内存块中的配置文件中经过解析和评估的数据。
由于系统上的任何其他应用程序都不应该使用我们的配置文件来生成密钥,因此不存在冲突。密钥本身并不局限于共享内存,它还可以用于信号量和其他IPC机制。
发布于 2010-05-12 06:20:52
posix共享内存函数(shm_open和friends)具有更友好的用户界面,因为它们可以接受一个惟一的文件名,应用程序必须使用该文件名来打开相同的共享内存块。
话虽如此,通常也可以在Linux下的/dev/shm中打开一个文件,然后用MAP_SHARED对其进行mmap,这样做的效果大致相同。
https://stackoverflow.com/questions/2810837
复制相似问题