LINUX.ORG.RU

POSIX.1b in Linux


0

0

Привет всем.

Может ли кто просветить, как с поддержкой POSIX.1b в Linux? Есть ли поддержка разделяемой памяти и семафоров? Версией чего определяется наличие этой поддержки (glibc???) ?

★★

Ну, полной поддержки POSIX почитай что нигде нет, но в целом в Linux все OK. Семафоры и разделяемая память поддерживаются в виде SVID: semget и shmat etc. sem_open и shm_open я под линухом не видел Зависит же их наличие от опций компиляции ядра, однако чтобы их не было -- это должна быть какая-то очень специфическая система

aa5779
()

2 aa5779 sem_open и shm_open есть и работают (см. /usr/include/semaphore.h), а содержатся насколько я помню в libpthread. Единственное я не знаю как насчет совместного использования POSIX семафоров и SV - раньше у меня оно все в корку валилось, но сейчас не знаю - давно не использовал совместно.

А так поддержка POSIX нормальная - насколько я знаю все есть (то что мне надо было от POSIX, остальное естественно не смотрел;) )

tvn
()

Господа, благодарю за ответы, но: 1. Меня интересует именно POSIX.1b (то есть реал-тайм) 2. Тестирую на Mandrake 8.0. (glibc2.2.2-4) shm_open() компилируется и линкуется отлично (#include mman.h cc -lrt), но при выполнении вместо того, чтобы создать разделяемую память, пишет "shm_open() not supported in this implementation" 3. Ядро тут вроде-как ни при чем, поскольку стандарт POSIX.1b требует, чтобы семафоры и разделяемая память реализовывались без ядреных вызовов (поправьте, если я не прав).

Вопрос: какую версию какой либы я должен поставить, чтобы shm_open() делал то, что его просят, а не консоль засорял?

blex ★★
() автор топика

Я работаю с POSIX.1b в RedHat 7.2
я досконально не знаю что входит в состав POSIX1.b, но там 
присутствуют таймеры, RT-сигналы (правда это в ядре реализовано), async IO, разделяемая память,
Все это добро находится в библиотеке librt 
(ключ -lrt при сборке)
которая входит в состав glibc-devel (у меня стоит версия
2.2.4

Федор.

anonymous
()

Да кстати ситуация с shm_open() not supported in this implementation как раз связана с ядром. Я не использовал shmem (мне не нужно), а про наличие rt таймеров я узнал как раз из исходников ядра (код в районе сигналов, rt таймеры реализованы через rt сигналы). Так что рекомендую скачать исходники ядра посвежее и просмотреть код в районе IPC.

Федор.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.