fpc linux и мультипроцессность.

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
[DD]
незнакомец
Сообщения: 2
Зарегистрирован: 13.11.2010 11:48:09

fpc linux и мультипроцессность.

Сообщение [DD] »

Недавно решил взяться за разработку многопроцессного приложения. С самими процессами более или менее разобрался.
Начал появляться вопрос про передачу данных между процессами. Почитав литературу нашел подходящий для меня способ. Этим способом оказалась очередь сообщений. скопипастил пример из статьи откомпилировался он даже с первой попытки, но вот загвоздка сообщения не отправляются и соответственно не читаются... взял пример из пакета fpc-build(использую Gentoo так что там исходники) откомпилировал, запускаю и вижу что отправка опять не проходит. Возвращался код ошибки 14 - ESysEFAULT - неверный адрес.

Собственно вопрос. В чем тут может быть ошибка: в настройке системы или параметрах компиляции или может еще в чем-то?
Аватара пользователя
pda
постоялец
Сообщения: 303
Зарегистрирован: 27.05.2005 19:59:53

Сообщение pda »

Не пользуйтесь ими. Они давно устарели и присутствуют лишь для совместимости с какими-то очень старыми программами. Современным программам для межпроцессного обмена рекомендуется использовать сокеты (в том числе и локальные, если обмен ограничен одной машиной), отоброжаемую память (man mmap2). Если обмена много, можно посмотреть на современные библиотеки, например ZeroMQ. Так же стоит обратиться к книге "Искусство программирования UNIX" Эрика Реймонда, там вопросы актуальных средств и интерфейсов освещаются.

The upper, message-passing layer of System V IPC has largely fallen out of use. The lower layer, which consists of shared memory and semaphores, still has significant applications under circumstances in which one needs to do mutual-exclusion locking and some global data sharing among processes running on the same machine. These System V shared memory facilities evolved into the POSIX shared-memory API, supported under Linux, the BSDs, MacOS X and Windows, but not classic MacOS.

http://www.faqs.org/docs/artu/ch07s02.html#id2922148

The System V IPC facilities are present in Linux and other modern Unixes. However, as they are a legacy feature, they are not exercised very often. The Linux version is still known to have bugs as of mid-2003. Nobody seems to care enough to fix them.

http://www.faqs.org/docs/artu/ch07s03.html#id2923376
[DD]
незнакомец
Сообщения: 2
Зарегистрирован: 13.11.2010 11:48:09

Сообщение [DD] »

Спасибо за совет... Однако мне нужны были именно очереди сообщений...
PS если вдруг появится еще такой же упертый как и я - то пусть знает что эта проблема возникает на 64-битных системах и связана она с тем, что тип long имеет размер в 8 байт а longint(который используется во всех примерах для fpc) 4байта таким образом получаем, что в записи TMsgBuf поле mtype должно иметь тип int64.
Ответить