[sisyphus] Shared memory - HELP PLEASE!
Ivan Adzhubey
=?iso-8859-1?q?iadzhubey_=CE=C1_rics=2Ebwh=2Eharvard=2Eedu?=
Чт Мар 25 10:05:29 MSK 2004
On Thursday 25 March 2004 01:42 am, Grigory Batalov wrote:
> On Wed, 24 Mar 2004 23:36:15 -0500
>
> Ivan Adzhubey <iadzhubey на rics.bwh.harvard.edu> wrote:
> > Видимо придется все же самому разбираться. Может кто-нибудь поделится
> > исходниками чего-то работающего с shm, что у него самого - работает? Или
> > хотя бы фрагментом. Буду признателен.
>
> У меня сохранился небольшой тест. Кажется, без ошибок =).
> Во время sleep(5) запустите ipcs - увидите выделенный 1К.
>
> $ gcc -g -Wall -O2 -o shmtest shmtest.c
> $ ./shmtest &
> $ ipcs
>
> ------ Shared Memory Segments --------
> key shmid owner perms bytes nattch status
> 0x00000000 1245187 bga 700 1048576 1
Спасибо, Григорий!
К сожалению, там все сложнее. Ваша программа работает, и такие простые тесты я
уже научился сам писать ;). Проблема возникает когда a) есть минимум два
процесса пользующихся этой памятью (хотя бы по очереди, например форкнутый
child и его parent) b) используется блокировка (lock)
А хотя нет, погодите! Кажется что-то видно... у вас запрашивается 2K памяти и
выделяется 2K. А у меня вашей программе выделяется в четыре раза больше:
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 1736711 ivan 700 4194304 1
Кажется это все-таки баг. Сейчас проверю под другим ядром...
Спасибо!
--
Иван
Подробная информация о списке рассылки Sisyphus