crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 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 Рейтинг@Mail.ru Текстовая версия Сейчас: 7.7.2025, 14:48