[ОТВЕТИТЬ]
Опции темы
08.03.2016 15:06  
Tema
Цитата:
Сообщение от OlegON
либо я тебя неправильно понял, либо ты первое сообщение не читал... В чем твоя схема отличается от моей и как она защищена от ребута и прочих убийств программы между 1 и 3? Напоминаю, что суть кроссплатформенная, поэтому WM_* поймать не удастся.
возможно я не понял. Из твоего описания в п.1 выглядит так как-будто программа запускается, создает файл и что дальше происходит неясно - висит ли она в простое, или завершается? Но используя магические способности, предположим (), что вероятно программа периодически запускается по таймеру и работает некое время, и может быть не успевает завершиться до следующего запуска.

в принципе да, всё похоже, просто из условий не совсем непонятно что ты хочешь от схемы

если расширить всю схему на несколько запусков:
первый запуск:
1) запускается программа:
а) проверяется наличие флага, если нет - создается флаг, если есть - значит предыдущий запуск был не закончен и возможно нужно сделать что-то еще по устранению последствий, либо работает другой экземпляр программы - проблема в том чтобы различить эти моменты?
б) делается дело,
в) удаляется флаг и завершается программа,

второй запуск:
2) см.п.1

Так?
 
08.03.2016 17:57  
OlegON
Проблема, да, была как раз в том, чтобы не дать запуститься второй копии и только тогда, когда работает предыдущая.
Файловый флаг под Windows страдает своим наличием при ребуте, т.е. программы нет, а флаг есть.
Я сейчас обошел через установку флага в базе, поскольку программа работает с ней, при дисконнекте или ребуте, флаг пропадает.
Но в целом видно, что Win в очередной раз в пролете, поскольку в Linux есть очищающаяся при перезагрузке директория для этих вот целей.
 
08.03.2016 18:45  
Tema
в java можно попробовать через JMX, а конкретнее, через MBeanServer, там можно динамически создать параметр и проверять-менять его в другом экземпляре программы. Соответственно при ребуте его не должно быть видно.
 
08.03.2016 18:56  
OlegON
Спасибо за идею, однако было интересно в свете именно винды и ее возможностей, которые, как мы видим, отсутствуют в очередной раз...
 
09.03.2016 10:26  
grannie
FILE_ATTRIBUTE_TEMPORARY и FILE_FLAG_DELETE_ON_CLOSE



Не?
 
09.03.2016 10:28  
OlegON
Вот, к сожалению, это все либо подразумевает корректное закрытие приложения, либо не видно из другого приложения...
 
09.03.2016 10:47  
Micle
Цитата:
Сообщение от OlegON
Но в целом видно, что Win в очередной раз в пролете, поскольку в Linux есть очищающаяся при перезагрузке директория для этих вот целей.
Не понимаю, что мешает организовать такую же в винде...
 
09.03.2016 10:57  
grannie
А почему мы зациклились на одном флаге? Кто мешает создать, например, два, по началу и концу процесса? Для эстетов можно юзать потоки в одном файле.
 
09.03.2016 11:13  
Micle
Цитата:
Сообщение от grannie
А почему мы зациклились на одном флаге? Кто мешает создать, например, два, по началу и концу процесса? Для эстетов можно юзать потоки в одном файле.
Как я понимаю проблема в зависании. Т.е. когда программа висит, она по флагам будет выглядеть как запущенная.

При принудительной перезагрузке компа, флаги останутся. Вот тут их и нужно безусловно удалять при запуске системы. Этого можно добиться например положив bat файл в автозагрузку, который и будет заниматься удалением файлов

Код:
%appdata%\microsoft\windows\start menu\programs\startup\


ЗЫ: Зависания кроссплатформенной Жабы - это нормально, то что винда каталоги не чистит автоматом - это прям проблема проблем....
 
09.03.2016 14:42  
grannie
Цитата:
Сообщение от Micle
Как я понимаю проблема в зависании. Т.е. когда программа висит, она по флагам будет выглядеть как запущенная.

При принудительной перезагрузке компа, флаги останутся.
Если мы "флагируем" И начало, И конец процесса - мы всегда сможем разобраться после внезапной уборщицы, вытаскивающей кабель из сервера, запущен ли уже процесс штатно или "висит".
Так кто/что нам это мешает делать?
 
 


Опции темы



Часовой пояс GMT +3, время: 05:18.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.