Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Валерий_
0 / 0 / 5
Регистрация: 28.10.2014
Сообщений: 98
Завершенные тесты: 2
#1

Реакция на возвращаемое значение - C++

24.10.2015, 14:32. Просмотров 225. Ответов 14
Метки нет (Все метки)

Здравствуйте,

Есть программа которая выполняеться и после всех действий удаляет себя.
Но появилась проблема, если закрыть программу до
выполнения всех её функций она остаёться.
Вопрос: как заставить программу реагировать на код
завершения отличный от 0(завершена корректно)?

Заранее Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2015, 14:32
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Реакция на возвращаемое значение (C++):

Возвращаемое значение
Как сделать так, что бы в зависимости от подаваемых аргументов, функция...

Возвращаемое значение функции
array& array::operator = (const array &q) { if (this != &q) { delete s;...

Значение, возвращаемое функцией (C++)
В общем, задача такая. Написать программу, печатающую все вводимые символы в...

Возвращаемое значение функции
Добрый день. Есть функция: TextString InfoBox::name(unsigned int i) const { ...

Возвращаемое значение функции
void tokenize(string str_translate){ char char_translate; ...

Возвращаемое значение функции
Здравствуйте Я тут новенький. Очень трудно у вас проходить регистрацию. У...

14
nmcf
6243 / 5555 / 2526
Регистрация: 14.04.2014
Сообщений: 23,356
24.10.2015, 16:00 #2
Программа сама свой код формирует через return. Или что ты имеешь в виду? Какая ОС?
0
Валерий_
0 / 0 / 5
Регистрация: 28.10.2014
Сообщений: 98
Завершенные тесты: 2
24.10.2015, 22:47  [ТС] #3
ОС Win10
Да, кажеться, я имею в виду return.
Подскажете способ из личной практики?
0
nmcf
6243 / 5555 / 2526
Регистрация: 14.04.2014
Сообщений: 23,356
24.10.2015, 22:49 #4
Ну если это windows-приложение, то оно получает сообщение при закрытии, когда на кнопку закрытия нажимаешь.
1
Валерий_
0 / 0 / 5
Регистрация: 28.10.2014
Сообщений: 98
Завершенные тесты: 2
24.10.2015, 23:00  [ТС] #5
И как на С++ словить нажатие кнопки выхода, подскажите, если не сложно.
0
nmcf
6243 / 5555 / 2526
Регистрация: 14.04.2014
Сообщений: 23,356
24.10.2015, 23:07 #6
У тебя графическое приложение или консольное?
0
Валерий_
0 / 0 / 5
Регистрация: 28.10.2014
Сообщений: 98
Завершенные тесты: 2
24.10.2015, 23:12  [ТС] #7
Консольное
0
nmcf
6243 / 5555 / 2526
Регистрация: 14.04.2014
Сообщений: 23,356
24.10.2015, 23:18 #8
Тогда, наверное, никак. Делай оконное.
1
Убежденный
Ушел с форума
Эксперт С++
15941 / 7252 / 1176
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
25.10.2015, 10:27 #9
"Крестик" в консольном приложении ловится через
установку своего обработчика, см. функцию SetConsoleCtrlHandler.
1
nmcf
6243 / 5555 / 2526
Регистрация: 14.04.2014
Сообщений: 23,356
25.10.2015, 10:54 #10
Убежденный, а как её согласовать с работой консольного приложения?
0
Убежденный
Ушел с форума
Эксперт С++
15941 / 7252 / 1176
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
25.10.2015, 11:17 #11
Поясни, что имеется в виду.
0
nmcf
6243 / 5555 / 2526
Регистрация: 14.04.2014
Сообщений: 23,356
25.10.2015, 11:38 #12
Ну приложение работает, что-то выполняет, и тут нажали кнопку - как основной алгоритм должен об этом узнать и корректно завершиться прежде, чем ОС его завершит принудительно?
0
Убежденный
Ушел с форума
Эксперт С++
15941 / 7252 / 1176
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
25.10.2015, 11:45 #13
Надо из обработчика подать какой-то сигнал (например, event) в нужный поток,
что приложение закрывается. На выполнение всех очистительных работ у
приложения будет примерно 5 секунд, потом его прибъет система.
0
nmcf
6243 / 5555 / 2526
Регистрация: 14.04.2014
Сообщений: 23,356
25.10.2015, 12:17 #14
5 секунд - это к выключению и завершению сеанса относится? А если нажато Ctrl-C, например, и Handler возвратит true, приложение останется работать, если само не завершится?
0
Убежденный
Ушел с форума
Эксперт С++
15941 / 7252 / 1176
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
25.10.2015, 13:55 #15
Поведение программы и реакция системы на возврат TRUE/FALSE из хэндлера
немного различаются на разных версиях Windows, сейчас точно уже не скажу.
Но возврат из хэндлера можно задержать. Например, что-то типа такого:
C++
1
2
3
4
5
6
7
8
9
BOOL _stdcall ConsoleHandler(DWORD Code)
{
    // ...
 
    SetEvent(g_hBeginQuit); // Сообщаем, что приложение завершается.
    WaitForSingleEvent(g_hEndQuit, INFINITE); // Ждем, пока операция
        // не будет обработана.
    return TRUE; // или FALSE, в зависимости от условий; суть от этого не меняется.
}
1
25.10.2015, 13:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2015, 13:55
Привет! Вот еще темы с решениями:

Классы. Возвращаемое значение
Всем привет:) Помогите исправить ошибки template <class T> class Vector {...

Возвращаемое значение делигата
Сделал делигат, который принимает до 4-х аргументов функции, которая принимает...

Возвращаемое значение в class
Здравствуйте можно ли как-то возвраить значение основной программе, если...

Возвращаемое значение из класса
#include <iostream> using namespace std; class Integer { public: int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru