Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Приложение внезапно закрывается 
:(
    Опции темы
Anton Vatchenko
Дата 5.3.2006, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 21.5.2004

Репутация: нет
Всего: -1



Моя программа выполняет следующие действия:
1) Создает папку
2) Запускает еще один экзешник (через pipe, чтобы получить лог). Тот экзешник создает файл в созданной папке и пишет в него бинарные данные.
3) Мое приложение проверяет размер файла. Если файл недоступен, то выдается сообщение.
4) Удаляется папка.

Иногда происходят с 3), и выводится сообщение, но это ничего - можно дождаться, когда можно будет просмотреть файл. Иногда пункты 3 и 4 зависают и не выполняются, и приложение тихо закрывается, но это только на Win 2003 Server. Как такое починить?


--------------------
user posted image
PM MAIL   Вверх
Fixin
Дата 5.3.2006, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



Без кода тут вряд ли помочь.
PM MAIL ICQ   Вверх
Anton Vatchenko
Дата 5.3.2006, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 21.5.2004

Репутация: нет
Всего: -1



Fixin
Я бы с удовольствием дал, но связи идут с другими модулями и моими функциям, что выглядит оно типа:
CreateTemplateDir("code");
RunCompiler();
WriteJad();
FullRemoveDir("code");

Просто я подумал, что кто-то знает, в чем особенности Win2003Sever. А то я подозреваю, что это как-то связано с общим доступом (я удаляю папку, которую другая программа смотрит, или открываю файл, который уже другой пользователь смотрит).


--------------------
user posted image
PM MAIL   Вверх
DeadSoul
Дата 5.3.2006, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: нет
Всего: 11



Anton Vatchenko, а
Цитата(Anton Vatchenko @ 5.3.2006, 18:29 Найти цитируемый пост)
RunCompiler();

делат WaitForSingleObject?


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
Anton Vatchenko
Дата 5.3.2006, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 21.5.2004

Репутация: нет
Всего: -1



DeadSoul
Я же все делаю в одном потоке. Мне не нужна синхронизация.


--------------------
user posted image
PM MAIL   Вверх
sdeniss
Дата 5.3.2006, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 3.3.2006

Репутация: 1
Всего: 1



Цитата(Anton Vatchenko @ 5.3.2006, 18:06 Найти цитируемый пост)
2) Запускает еще один экзешник (через pipe, чтобы получить лог). Тот экзешник создает файл в созданной папке и пишет в него бинарные данные.
3) Мое приложение проверяет размер файла. Если файл недоступен, то выдается сообщение.

вообще то тут неплохо бы сделать синхронизацию, а то возможны ситуции --
1)открыл до того как закончил писать
2)открыл до того как начал писать
3)удалил до того, как закончил писать и.т.дsmile))

Как открывается файл (флаг FILE_SHARE_XXXX -- какой?, мож сразу сделать - 0 ?? )

PM MAIL   Вверх
Anton Vatchenko
Дата 5.3.2006, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 21.5.2004

Репутация: нет
Всего: -1



Просто не понимаю, зачем нужна синхронизация. Вроде пока экзешник не создаст файл, то дело не дойдет до следующей строки, где я открываю тот созданный файл.


--------------------
user posted image
PM MAIL   Вверх
sdeniss
Дата 5.3.2006, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 3.3.2006

Репутация: 1
Всего: 1



Цитата(Anton Vatchenko @ 5.3.2006, 19:48 Найти цитируемый пост)
Просто не понимаю, зачем нужна синхронизация. Вроде пока экзешник не создаст файл, то дело не дойдет до следующей строки, где я открываю тот созданный файл.

Тогда больше кода в студиюsmile))) мне самому интересно посмотреть как ты это делаешь? вроде тогда ты должен ждать пока запущенный процесс кончитсяsmile)
PM MAIL   Вверх
DeadSoul
Дата 5.3.2006, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: нет
Всего: 11



Цитата(Anton Vatchenko @ 5.3.2006, 19:28 Найти цитируемый пост)
DeadSoul
Я же все делаю в одном потоке. Мне не нужна синхронизация.

А как тогда ты ждешь окончания работы второго ехе-шника?


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
Earnest
Дата 6.3.2006, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



Цитата(Anton Vatchenko @ 5.3.2006, 19:48 Найти цитируемый пост)
Просто не понимаю, зачем нужна синхронизация. Вроде пока экзешник не создаст файл, то дело не дойдет до следующей строки, где я открываю тот созданный файл.

Еще как дойдет. Запуск другого exe создает новый процесс, который выполняется совершенно независимо от твоего. CreateProcess (или что там у тебя) возвращает управление, как только создаст процесс, а не когда он закончит работу.
Т.е. ты обязан синхронизироваться, иначе результаты будут зависеть от погоды на галапагосских островах.


--------------------
...
PM   Вверх
Anton Vatchenko
Дата 6.3.2006, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 21.5.2004

Репутация: нет
Всего: -1



Так в том то и дело, что приложение консольное, и пока оно не закончится, моя программа не продолжит работать. Так что ждать мне ничего не надо, и синхронизировать тоже.

А Windows 2003 Server себя как-то странно ведет: при ошибке тихо закрывает приложение, а при следующем включении компьютера выводит все сообщения об ошибках. Так и должно быть?


--------------------
user posted image
PM MAIL   Вверх
Fixin
Дата 6.3.2006, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



Как именно запускаешь второй экзешник?
PM MAIL ICQ   Вверх
sdeniss
Дата 6.3.2006, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 3.3.2006

Репутация: 1
Всего: 1



Оно процесс прежде всего, поэтому ждать хощь не хошь надоsmile)) Ты WinExec какой нидь используешь?
просто попробуй подождать -- тогда с вер. 90% программа вылетать не будетsmile))
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0540 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.