Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ClO_own
0 / 0 / 0
Регистрация: 15.04.2012
Сообщений: 7
#1

Наследование дескриптора семафора другими процессами - C++

21.04.2012, 15:00. Просмотров 616. Ответов 3
Метки нет (Все метки)

Доброго времени суток, проблема в следующем: пишу приложение, которое использует семафоры. Мне нужно, чтобы дескриптор семафора мог наследоваться другими процессами, т.е если я 1 раз создал семафор в программе и не убил его, то при открытии другой копии этой программы она могла получить доступ к уже созданному семафору.
C
1
2
3
4
5
6
HANDLE WINAPI CreateSemaphore(
  __in_opt  LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,
  __in      LONG lInitialCount,
  __in      LONG lMaximumCount,
  __in_opt  LPCTSTR lpName
);
Не знаю как в атрибутах задать наследование дескритора из структуры _SECURITY_ATTRIBUTES

C
1
2
3
4
5
typedef struct _SECURITY_ATTRIBUTES {
  DWORD  nLength;
  LPVOID lpSecurityDescriptor;
  BOOL   bInheritHandle;
} SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
Перерыл мсдн, но проблема не решилась.. Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2012, 15:00     Наследование дескриптора семафора другими процессами
Посмотрите здесь:

C++ Win32 API Работа с процессами
C++ Канал между процессами
Обмен данными между двумя процессами C++
Операции с процессами C++
C++ Как по требованию вызвать дескриптора объекта?
C++ Системные вызовы и работа с процессами
C++ Работа семафора в разных процессах
Как заблокировать выполнение процесса с помощью semop, пока значение семафора не равно 1 C++
Обмен данными между процессами C++
C++ Обмен данными между процессами
Управление процессами и потоками C++
C++ Передача дескриптора текущего процесса через mailslot

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
21.04.2012, 15:48     Наследование дескриптора семафора другими процессами #2
Clwn, а в чем проблема? вы хотите чтобы семафором могли пользоваться только ваши приложения?
если не заострять внимание на паранойе - то просто создаете именованный семафор
ClO_own
0 / 0 / 0
Регистрация: 15.04.2012
Сообщений: 7
21.04.2012, 15:57  [ТС]     Наследование дескриптора семафора другими процессами #3
проблема в том, что если просто создать семафор
C
1
CreateSemaphore(NULL, 1, 127, "BlockForReading")
то при открытии другой копии приложения эта копия не видит дескриптор уже существующего семафора.

как я понял именно в
C
1
BOOL   bInheritHandle;
лежит решение, т.к значение TRUE позволяет использовать дескритор другим процессам.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
21.04.2012, 16:15     Наследование дескриптора семафора другими процессами #4
Clwn, зачем вам такой же дескриптор (в смысле значения)? именованный семафор можно открыть по его имени (OpenSemaphore)
в этом случае две копии программы будут работать с одним и тем же семафором

хотя в OpenSemaphore есть какието параметры, смысл которых мне сразу так в голову не приходит - можно рихтера посмотреть
Yandex
Объявления
21.04.2012, 16:15     Наследование дескриптора семафора другими процессами
Ответ Создать тему
Опции темы

Текущее время: 14:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru