Я пытаюсь настроить сегмент разделяемой памяти для хранения массива строк. В качестве примера этот массивLinux shmget() function in C++
пример строки [] = {«Это», «Пример», «строк»};
Затем я пытаюсь вызвать shmget, чтобы получить резервную сумму общей памяти os.
shmget (IPC_PRIVATE, SizeOf (пример), IPC_CREAT); // Я надеюсь, что это создает сегмент разделяемой памяти
Я нашел эту site, который говорит: «Ключевой аргумент является значением доступа, связанное с идентификатор семафора «Какой идентификатор семафора и как его создать.
Это компилируется с использованием g ++ -Wall, но я не знаю, как проверить и посмотреть, есть ли у него. Согласно руководству shm в linux, где IPC_PRIVATE я должен указать что-то типа «key_t». Мои мысли - это ключ к тому, как я идентифицирую общую память, то есть укажите строку как имя разделяемой памяти и/или номер идентификатора.
Чтение руководства через указывает, что shmget() возвращает «shmid». Опять же, что такое shmid, это int, string, указатель или какой-то особый тип, и так ли это, как я идентифицирую сегмент разделяемой памяти? Кроме того, если shmget() возвращает что-то, мне не нужно назначать его чему-то?
Если вы можете порекомендовать учебник или обзор, я был бы очень признателен. В дополнение к конкретным вопросам выше я хотел бы получить пример доступа к общей памяти из потока, который будет создан из команды fork().
Моя конечная цель - порождать поток для каждой строки в моем массиве, который будет выполнять своего рода инверсию. Это всего лишь небольшая небольшая задача, чтобы начать работу с разделяемой памятью и pthreads, так как я не нашел учебника для работы.
'shmget()' возвращает 'int' (http://www.kernel.org/doc/man-pages/online/pages/man2/shmget.2.html). Таким образом, 'shmid' будет целым числом. –