From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Wed, 2 Oct 2002 16:38:43 +0400 From: Sergey Vlasov To: community@altlinux.ru Subject: Re: [Comm] =?KOI8-R?B?0MHN0dTYINcg0ysr?= Message-Id: <20021002163843.43dbf5ea.vsu@altlinux.ru> In-Reply-To: <3D9B65DA.3040702@narod.ru> References: <3D9B65DA.3040702@narod.ru> X-Mailer: Sylpheed version 0.8.4 (GTK+ 1.2.10; i586-alt-linux) Mime-Version: 1.0 Content-Type: text/plain; charset=KOI8-R Content-Transfer-Encoding: 8bit Sender: community-admin@altlinux.ru Errors-To: community-admin@altlinux.ru X-BeenThere: community@altlinux.ru X-Mailman-Version: 2.0.13 Precedence: bulk Reply-To: community@altlinux.ru List-Unsubscribe: , List-Id: List-Post: List-Help: List-Subscribe: , List-Archive: Archived-At: List-Archive: List-Post: On Wed, 02 Oct 2002 16:32:10 -0500 "A. Kudryashov" wrote: > Можно ли в Linux использовать разделённую область памяти? > Пробовал shm_open, не получилось. > Если можно - дайте пример. shm_open - это поддержка именованной разделяемой памяти по стандарту POSIX 1003.1 (2001); есть и другие более распространенные способы. В принципе Linux 2.4.x и glibc 2.2.x это поддерживают, но... Читаем man shm_open (кстати, там заголовок неправильный - shm_open возвращает int, а не void *) до конца: The POSIX shared memory object implementation on Linux 2.4 makes use of a dedicated file system, which is normally mounted under /dev/shm. Предполагается, что на /dev/shm смонтирована файловая система tmpfs (в ранних ядрах 2.4 она называлась shm). Но по крайней мере ядро kernel24-up-2.4.18-alt8 (и, видимо, другие ядра от ALT) собрано без поддержки CONFIG_TMPFS, так что ничего не получится. Итак, POSIX shared memory не работает (кстати, этот стандарт слишком новый и в других системах с ним тоже могут быть проблемы). Но есть и другие способы: - SysV shared memory (man shmget и прочие shm*, man 5 ipc). Кстати, этот способ используется в X (XShm*). - mmap() обычного файла (с флагом MAP_SHARED). По поводу прочих вариаций (mmap /dev/zero, MAP_ANON) лучше смотреть, например, в исходники библиотеки libmm - там в документации, configure.in и *.c есть комментарии, на каких системах что работает (с примечаниями типа "делает вид, что работает, но потом виснет" и т.п.). Эта библиотека используется в Apache (точнее, в патче EAPI и mod_ssl).