![]() |
|
Модераторы: xvr |
![]()
|
|
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 3 Всего: 33 |
Здравствуйте.
Задача: Первый процесс пишет в файл, второй читает. Как сделать блокировку? ...Пока первый пишет, если второй попытается открыть файл в это время, чтоб он не получал ошибку, а просто застывал пока файл не освободит первый процесс. И на оборот. Спасибо! -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 1 Всего: 154 |
нужно создать глобальный именованный мьютекс, с именем, зависящим от имени файла, и каждый процесс должен пытаться захватить этот мьютекс, а уже потом писать в файл
в windows это просто, нужно просто создать мьютекс в глобальном пространстве имен, либо просто заблокировать часть файла, в которую пишешь ф-й LockFile, а в linux, нужно создать именованную разделяемую память, в ней создать мьютекс(мне одному кажется, что это равносильно удалению гланд через задницу?), и далее действовать так, как описано выше, либо, там должен быть свой аналог LockFile(Ex) |
|||
|
||||
| cristaloleg |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 15.6.2009 Где: Donetsk Репутация: нет Всего: нет |
А если создать переменную bool в которую запиывается true как только вызывается 1-я ф-ция и присваиватся false как только ф-ция завершиться, а 2-я ф-ция будет проверять и реагировать на это...
|
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 1 Всего: 154 |
||||
|
||||
| GrayCardinal |
|
|||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
andrew_121,
1. IPC мьютекс. 2. flock(2) 3. link(2) Какой вариант интересует ? Добавлено через 11 минут и 1 секунду Lazin, Извините, но Ваш вариант - действительно через задницу... |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 3 Всего: 33 |
GrayCardinal, Второй вариант мне больше нравиться. Но в манах не сказано как себя поведет второй процесс, будет ждать разблокировки или завершится с ошибкой.
Lazin, А вы любитель поизвращаться Это сообщение отредактировал(а) andrew_121 - 14.8.2009, 11:55 -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 1 Всего: 154 |
извиняю, но я же написал, что |
|||
|
||||
| GrayCardinal |
|
|||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
andrew_121,
По дефолту - будет ждать разблокировки... Это сообщение отредактировал(а) GrayCardinal - 14.8.2009, 12:20 |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 3 Всего: 33 |
GrayCardinal, Понял. Спасибо!
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| GrayCardinal |
|
|||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
andrew_121,
Завсегда пожалуйста |
|||
|
||||
| Loki |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 244 Регистрация: 9.7.2006 Репутация: нет Всего: нет |
p.s. может не в тему, но зачем вам эти сложности с чайлдами и парентами? может просто poll юзать?
или нужны разные секурити ливлы? |
|||
|
||||
| MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
все не так страшно ;)
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 3 Всего: 33 |
MAKCim, а что этот код делает? Мьютекс? так он без имени. Как его использовать?
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
![]()
|
| Правила форума "С/С++: Программирование под 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. |