![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
Xonxt |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 24.1.2006 Где: Украина / Одесса Репутация: нет Всего: 1 |
Доброе время суток.
интересует такой тривиальный вопрос. Увы, гугл ответить не может. Есть 2 отдельных приложения. Грубо говоря, клиент и сервер. Сервер че-то записывает в разделяемую память, а клиент должен оттуда это прочитать и вывести на экран. Фича в том, что доступ к этой самой разделяемой памяти надо обеспечить с помощью флаговой переменной. Т.е. не семафоры, не еще одна разделяемая память.. просто переменная... Вот как это сделать можно? Была у меня такая мысль, что сервер может эту флаговую переменнуб записывать в файл, а клиент будет крутиться в бесконечном цикле до тех пор, пока не прочитает эту переменную из файла.. но, имхо, это бред. или можно попытаться передавать эту флаговую переменнуб в очереди сообщений.. но это тоже бред.. |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 3 Всего: 162 |
А почему не заюзать fifo и стандартное read в клиенте и write в сервере?
|
|||
|
||||
Xonxt |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 24.1.2006 Где: Украина / Одесса Репутация: нет Всего: 1 |
Потому что это лабораторная работа
![]() Задание так выглядит: 1. Первое приложение читает слово из текстового файла, помещая его в участок разделяемой памяти. 2. Второе приложение из участка разделяемой памяти выводит слово на экран. 3. Синхронизировать доступ к участку разделяемой памяти при помощи флаговой переменной. |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 16 Всего: 196 |
Xonxt, ну тогда заведи в той же самой разделяемой памяти атомарную переменную. значение 0 означает можно читать файл и писать в эту область, значение 1 значит, что файл прочитан и область заполнена. Итого, если 0 второй процесс ждет, первый читает и переводит в 1, после этого первый ждет, второй работает и переводит в 0...
|
|||
|
||||
Xonxt |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 24.1.2006 Где: Украина / Одесса Репутация: нет Всего: 1 |
В этом-то и проблема.
Мне с помощью флаговой переменной нужно блокировать доступ клиента к разделяемой памяти, а не размещать этот флаг внутри той же разделяемой памяти.. хотя, конечно, можно выделить отдельный небольшой участок памяти... |
|||
|
||||
Xonxt |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 24.1.2006 Где: Украина / Одесса Репутация: нет Всего: 1 |
Ну, допустим, проблема решена.
Но еще одна проблема возникла.. Можно ли попросить, дорогие форумчане, простейший пример с двумя приложениями, использующими разделяемую память, и с семафорами? А то не могу вьехать.... ![]() |
|||
|
||||
rei3er |
|
||||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 21.9.2007 Репутация: нет Всего: нет |
|
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |