crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Удаление временных файлов в Active Directory
Введите ваше имя
Подтвердите код

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

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
SABROG Дата 20.5.2009, 8:21
 
Цитата(Litkevich Yuriy @ 20.5.2009, 1:10) *
Цитата(SABROG @ 20.5.2009, 2:44) *
с известным именем
только имя надо случайное генерить.

Не надо. Пусть будут от 1 до 1000, лишь бы я смог потом проверить существование этих файлов.
Litkevich Yuriy Дата 20.5.2009, 0:10
 
Цитата(SABROG @ 20.5.2009, 2:44) *
с известным именем
только имя надо случайное генерить.
igor_bogomolov Дата 19.5.2009, 23:13
 
Цитата(Kagami @ 19.5.2009, 23:56) *
Умные упсы рулят Они такие сигналы посылать умеют
Кризис в стране однако. Нема упсов. :)


А события консоли можно отлавливать так:
Раскрывающийся текст
#include <QtCore/QCoreApplication>
#include <windows.h>

BOOL CtrlHandler( DWORD fdwCtrlType )
{
  switch( fdwCtrlType )
  {
    // Handle the CTRL-C signal.
    case CTRL_C_EVENT:
      printf( "Ctrl-C event\n\n" );
      Beep( 750, 300 );
      return( TRUE );

    // CTRL-CLOSE: confirm that the user wants to exit.
    case CTRL_CLOSE_EVENT:
      Beep( 600, 200 );
      printf( "Ctrl-Close event\n\n" );
      return( TRUE );

    case CTRL_SHUTDOWN_EVENT:
      Beep( 750, 500 );
      printf( "Ctrl-Shutdown event\n\n" );
      return FALSE;

    default:
      return FALSE;
  }
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    if( SetConsoleCtrlHandler( (PHANDLER_ROUTINE) CtrlHandler, TRUE ) )
    {
        printf( "\nThe Control Handler is installed.\n" );
        printf( "\n -- Now try pressing Ctrl+C or Ctrl+Break, or" );
        printf( "\n    try logging off or closing the console...\n" );
        printf( "\n(...waiting in a loop for events...)\n\n" );
    }
    else
        printf( "\nERROR: Could not set control handler");

    return a.exec();
}
SABROG Дата 19.5.2009, 23:08
 
Цитата(Kagami @ 19.5.2009, 23:56) *
Умные упсы рулят :) Они такие сигналы посылать умеют

Да, давайте снабдим все клиентские станции на которых работает Qtшная программа упсами. Еще можно к мобильнику подрубить упс, чтобы временных файлов случайно не осталось, когда аккумулятор сядет. А упс можно носить в рюкзаке скажем. Они как-раз столько весят - полезно для здоровья, раскачка мышц ног и спины.
Kagami Дата 19.5.2009, 22:56
  Умные упсы рулят :) Они такие сигналы посылать умеют
igor_bogomolov Дата 19.5.2009, 22:47
 
Цитата(SABROG @ 19.5.2009, 23:44) *
от вырубания электричества это не спасет.
Да уж, такой сигнал нам не отловить :D
SABROG Дата 19.5.2009, 22:44
  Ладно, не думаю, что в этом есть какой-то смысл. Даже если отловить момент, от вырубания электричества это не спасет.

Тут нужен комплекс мер и в пределах одного класса QTemporaryFile проблему не решить. А посему думаю, что тут удобнее будет использовать обычный QFile с известным именем и всякие проверки в момент запуска программы на его существование.
igor_bogomolov Дата 19.5.2009, 22:23
 
Цитата(SABROG @ 19.5.2009, 23:03) *
А вообще в таких случая ОС кидает исключения какие-нибудь?
Я пробовал исключения отловить, не вышло. Видимо не кидает, или у меня руки кривые.

Еще пробовал atexit заюзать. Тоже не подошло.

Сейчас вообще задумался над тем, чтобы унаследовать QCoreApplication и переопределить его метод winEventFilter. Для этого пока разбираюсь в libqxt. У них подобным образом сделан отлов событий клавиатуры.

Еще читаю это.
SABROG Дата 19.5.2009, 22:03
  А вообще в таких случая ОС кидает исключения какие-нибудь?
Авварон Дата 19.5.2009, 21:41
  вообще-то в линуксе для того сигналы и нужны, чтобы их перехватывали - нормальная программа ДОЛЖНА отслеживать SIGTERM (ctrl+c) тобы освободить ресурсы. Ясен пень, что если этого не сделать, то деструкторы объектов зваться НЕ будут - ОС всего лишь отчистит память. Хз как с этим в виндовзе, но в линухе переопределить SIGTERM просто необходимо. Другой вопрос, что должна быть какая-то реализация в Qt такого полуэкстренного выхода (эктренный это SIGKILL:)) - нужно смотреть QApplication
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 1.6.2020, 8:14