Estoy usando shmget para compartir datos entre los procesos de mi proyecto en Linux.Valores seguros para usar como clave en shmget
int shmget(key_t key, size_t size, int shmflg);
Sin embargo, ningún otro programa puede llamar a shmget también, y por lo tanto, pueden conducir a un conflicto clave (porque uso una constante como la tecla para llamar shmget, que deben utilizar una constante en lugar de una clave generada debido los procesos laterales se construyen y ejecutan por separado).
¿Cuáles deberían ser los valores seguros que se utilizarán como clave en shmget?
Estoy pensando en generar claves aleatorias, y repito creando un segmento shm con el indicador IPC_EXCL hasta que encuentre una clave aceptable, pero no sé si es una buena opción – jondinham
@PaulDinh: sí, es una buena opción. Bueno, pero tienes que tener una forma de generar claves aleatorias, sin depender de 'sizeof (key_t)' específico; Solo usaría 'id' aleatorio para ftok() entonces. –
En caso de que tenga un escenario de cliente-servidor en el que cada cliente mantenga un segmento de memoria compartida para un IPC eficiente con el servidor, una buena opción para las teclas exclusivas 'shmget()' es basarlos en la llamada al sistema 'gettid()' , que devuelve la identificación del hilo de la persona que llama. Sin embargo, esto es específico de Linux. –