Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

21.04.2012, 15:00. Просмотров 665. Ответов 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;
Перерыл мсдн, но проблема не решилась.. Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2012, 15:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Наследование дескриптора семафора другими процессами (C++):

Работа семафора в разных процессах - C++
Процессы: Reder и несколько Sender'ов Собственно, есть семафор который управляет доступом к файлу... Реализован он в Reder'e и нужно...

Как заблокировать выполнение процесса с помощью semop, пока значение семафора не равно 1 - C++
Как заблокировать выполнение процесса с помощью semop, пока значение семафора не равно 1 ? необязательно единицы, можно любое число, это не...

Как по требованию вызвать дескриптора объекта? - C++
Здрасти! Подскажите пожалуйста, как вызвать дескриптор объекта myCar до сообщения "End of programm"?: class Car { public: ...

Заменить наследование классов на наследование интерфейсов - C++
#include <iostream> #include <assert.h> using namespace std; int people_on_base = 100; int vehicles_on_base = 100; double...

Передача дескриптора текущего процесса через mailslot - C++
Пытаюсь передать дескриптор текущего процесса и его ID через mailslot. ID проходит норм, сами сообщения "ID процесса" и "Дескриптор" тоже...

Синхронизация с другими процессами Win32 - C#
Есть DLL под Win32, обслуживающая аппаратное устройство и её описание. Она поддерживает десятка полтора функций, позволяющих работать с...

3
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
21.04.2012, 15:48 #2
Clwn, а в чем проблема? вы хотите чтобы семафором могли пользоваться только ваши приложения?
если не заострять внимание на паранойе - то просто создаете именованный семафор
0
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 позволяет использовать дескритор другим процессам.
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
21.04.2012, 16:15 #4
Clwn, зачем вам такой же дескриптор (в смысле значения)? именованный семафор можно открыть по его имени (OpenSemaphore)
в этом случае две копии программы будут работать с одним и тем же семафором

хотя в OpenSemaphore есть какието параметры, смысл которых мне сразу так в голову не приходит - можно рихтера посмотреть
0
21.04.2012, 16:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2012, 16:15
Привет! Вот еще темы с ответами:

Связать программу с другими процессами на компьютере - C#
Всем доброго времени суток, делаю подобную программу впервые. Это некая программа напоминалка которую нельзя закрыть пока какое-то действие...

нужно чтобы программа работала одновременно с другими процессами - C#
В общем пишу программу - что-то вроде finder(Mac OS X) для windows... и вот, столкнулся с проблемой, по нажатию на меню, windows...

Создание семафора - C++ Linux
Запускаю код на одной машине все работает, на другой выдает ошибку "Error: can't init semaphore." Ошибка возникает при открытии семафора....

Превишен таймаут семафора - Windows 7
Всем привет! Quad 6600,Nvidia 680 i SLi,Жесткий диск WDC WD15 1.5 терабайт,разбит на 3 раздела! При копировании с одного раздела на...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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