![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
Моя программа выполняет следующие действия:
1) Создает папку 2) Запускает еще один экзешник (через pipe, чтобы получить лог). Тот экзешник создает файл в созданной папке и пишет в него бинарные данные. 3) Мое приложение проверяет размер файла. Если файл недоступен, то выдается сообщение. 4) Удаляется папка. Иногда происходят с 3), и выводится сообщение, но это ничего - можно дождаться, когда можно будет просмотреть файл. Иногда пункты 3 и 4 зависают и не выполняются, и приложение тихо закрывается, но это только на Win 2003 Server. Как такое починить? |
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 8 Всего: 18 |
Без кода тут вряд ли помочь.
|
|||
|
||||
| Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
Fixin
Я бы с удовольствием дал, но связи идут с другими модулями и моими функциям, что выглядит оно типа: CreateTemplateDir("code"); RunCompiler(); WriteJad(); FullRemoveDir("code"); Просто я подумал, что кто-то знает, в чем особенности Win2003Sever. А то я подозреваю, что это как-то связано с общим доступом (я удаляю папку, которую другая программа смотрит, или открываю файл, который уже другой пользователь смотрит). |
|||
|
||||
| DeadSoul |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: нет Всего: 11 |
Anton Vatchenko, а
делат WaitForSingleObject? -------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
| Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
DeadSoul
Я же все делаю в одном потоке. Мне не нужна синхронизация. |
|||
|
||||
| sdeniss |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 3.3.2006 Репутация: 1 Всего: 1 |
вообще то тут неплохо бы сделать синхронизацию, а то возможны ситуции -- 1)открыл до того как закончил писать 2)открыл до того как начал писать 3)удалил до того, как закончил писать и.т.д Как открывается файл (флаг FILE_SHARE_XXXX -- какой?, мож сразу сделать - 0 ?? ) |
|||
|
||||
| Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
Просто не понимаю, зачем нужна синхронизация. Вроде пока экзешник не создаст файл, то дело не дойдет до следующей строки, где я открываю тот созданный файл.
|
|||
|
||||
| sdeniss |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 3.3.2006 Репутация: 1 Всего: 1 |
Тогда больше кода в студию |
|||
|
||||
| DeadSoul |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: нет Всего: 11 |
А как тогда ты ждешь окончания работы второго ехе-шника? -------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Еще как дойдет. Запуск другого exe создает новый процесс, который выполняется совершенно независимо от твоего. CreateProcess (или что там у тебя) возвращает управление, как только создаст процесс, а не когда он закончит работу. Т.е. ты обязан синхронизироваться, иначе результаты будут зависеть от погоды на галапагосских островах. -------------------- ... |
|||
|
||||
| Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
Так в том то и дело, что приложение консольное, и пока оно не закончится, моя программа не продолжит работать. Так что ждать мне ничего не надо, и синхронизировать тоже.
А Windows 2003 Server себя как-то странно ведет: при ошибке тихо закрывает приложение, а при следующем включении компьютера выводит все сообщения об ошибках. Так и должно быть? |
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 8 Всего: 18 |
Как именно запускаешь второй экзешник?
|
|||
|
||||
| sdeniss |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 3.3.2006 Репутация: 1 Всего: 1 |
Оно процесс прежде всего, поэтому ждать хощь не хошь надо
просто попробуй подождать -- тогда с вер. 90% программа вылетать не будет |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |