LINUX.ORG.RU
Ответ на: комментарий от Onanim

qqq

Как это было в qnx4, qnx6: два процесса обмениваются данными через именованную шаред мемори. В линухе именованной шаред мемори нет. Прихидится использовать имя, конвертить его в ключ.

binr ★★
() автор топика
Ответ на: qqq от binr

> Как это было в qnx4, qnx6: два процесса обмениваются данными через
> именованную шаред мемори. В линухе именованной шаред мемори нет.
> Прихидится использовать имя, конвертить его в ключ.

В Linux есть SysV shared memory и POSIX shared memory.
SysV shared memory идентифицируется ключами, POSIX shared memory
идентифицируется путями в файловой системе (именами).

Или ты хочешь сказать, что в QNX еще какая-то третья shared memory
есть?

Onanim
()
Ответ на: комментарий от Onanim

ййй

не третья, а стандартная именованная POSIX shared memory, но её можно использовать для межпроцессного обмена. А Линуховую именованную shared memory можно использовать только для межпоточного обмена в контексте одного процесса.

Мне надо что бы процессы асинхронно запускающиеся друг относительно друга, могли обмениваться данными через shared memory, поэтому пришлось использовать shared memory System V, а имя конвертить в ключи. Имена длинные.

binr ★★
() автор топика
Ответ на: ййй от binr

> не третья, а стандартная именованная POSIX shared memory, но её
> можно использовать для межпроцессного обмена. А Линуховую
> именованную shared memory можно использовать только для межпоточного
> обмена в контексте одного процесса.
>

Ржунимагу :-))) "А пацаны-то не знают" (C)

С какого это перепуга в Linux POSIX shared memory нельзя использовать
для межпроцессного обмена? Откуда ты это взял?
(кстати - в контексте одного процесса никакой shared memory вообще
не нужно)

HTH

Onanim
()
Ответ на: комментарий от Onanim

Вдогонку: если твоя конкрентная версия Linux не умеет POSIX shared
memory ты можешь использовать вместо нее обычный memory mapped file.
HTH

Onanim
()
Ответ на: комментарий от Onanim

qqq

Интересное мнение. Ссылку на доки в студию!

Покажи рабочий пример обмена данными между двумя процессами (а не потоками).

binr ★★
() автор топика
Ответ на: комментарий от Onanim

ййй

с удовольствием почитаю доки по этим темам. Дайте пожалуйста ссылки.

binr ★★
() автор топика
Ответ на: qqq от binr

> Интересное мнение. Ссылку на доки в студию!

man shm_open

Ну и Стивенса там почитай что-ли, погугли...

(или используй, как я уже сказал, обычный memory mapped file)

> Покажи рабочий пример обмена данными между двумя процессами
> (а не потоками).

В чем именно у тебя проблема?

Onanim
()
Ответ на: комментарий от Onanim

qqq

стивенса читали, от shm_open() отказался, т.к. немного глюкавая вещь. Например если сделать 127 раз shm_open()/shm_unlink() то оно падает.

Кроме того System V для unix систем стандартные.

binr ★★
() автор топика
Ответ на: qqq от binr

> стивенса читали, от shm_open() отказался, т.к. немного глюкавая вещь.

Тогда твой вопрос непонятен :-/
OK, ты отказался от POSIX shared memory потому, что они "глючат". Твое право.
Но тогда откуда твой тезис о том, что якобы POSIX shared memory
на Linux не работает для разных процессов?

> Например если сделать 127 раз shm_open()/shm_unlink() то оно падает.

Чота сомневаюсь :-/

> Кроме того System V для unix систем стандартные.

Аналогично и memory mapped files - open/mmap есть везде.

HTH

Onanim
()
Ответ на: qqq от binr

> В линухе именованной шаред мемори нет.

а что мешает создать файл нужного размера и сделать mmap на него?
Вот тебе и shared memory причем именованная.

fghj ★★★★★
()
Ответ на: qqq от binr

> от shm_open() отказался, т.к. немного глюкавая вещь. Например если сделать 127 > раз shm_open()/shm_unlink() то оно падает.

кто оно, ядро или ваша программа? а вы уверены что это вызванно не вашим неправильным его использованием или ошибками которые просто не проявились на qnx?

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