Название: Действие по выходу из консольного приложения Отправлено: YvenTitan от Октябрь 26, 2016, 12:41 Здравствуйте
У меня есть консольное приложение QCoreApplication, которое я запускаю под QNX (возможно это не имеет значения). Мне необходимо выполнить некоторые действия перед выходом из приложения (сейчас я выхожу из него по нажатию CTRL + C). Можете подсказать как это сделать? По сигналу aboutToQuit() у меня не получилось. Возможно, проще сделать выход по нажатию другой кнопки... Название: Re: Действие по выходу из консольного приложения Отправлено: __Heaven__ от Октябрь 26, 2016, 12:49 std::atexit (http://ru.cppreference.com/w/cpp/utility/program/atexit) не пробовали?
Название: Re: Действие по выходу из консольного приложения Отправлено: YvenTitan от Октябрь 26, 2016, 13:39 C QCoreApplication не получается, но может делаю не так.
#include<QCoreApplication> #include<QDebug> #include<cstdlib> #include<cstdio> void print(){ qDebug()<<"eee"; } int main(int argc, char *argv[]){ QCoreApplication a(argc,argv); atexit(print); return a.exit(); } Название: Re: Действие по выходу из консольного приложения Отправлено: Bepec от Октябрь 26, 2016, 13:46 Видимо не так...
Потому что цикл событий запускать надо, а это exec(). Сделайте так. Код: int code = a.exec(); Название: Re: Действие по выходу из консольного приложения Отправлено: YvenTitan от Октябрь 26, 2016, 13:52 Сейчас пробую в Windows
int code = a.exec(); atexit(print); return code; Не вылетает, но и в консоль ничего не выводит по закрытию окна Название: Re: Действие по выходу из консольного приложения Отправлено: Bepec от Октябрь 26, 2016, 13:55 Без кода можно сказать только "А хз".
Название: Re: Действие по выходу из консольного приложения Отправлено: YvenTitan от Октябрь 26, 2016, 14:08 #include <QCoreApplication>
#include<QDebug> #include<cstdlib> #include<cstdio> void print(){ qDebug()<<"ttt"; } int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); int code = a.exec(); atexit(print); return code; } Название: Re: Действие по выходу из консольного приложения Отправлено: Old от Октябрь 26, 2016, 14:20 Ctrl+C послает процессу сигнал (не путать с Qt-сигналами), который по умолчанию немедленно завершает процесс.
Вам нужно либо обрабатывать этот сигнал самому, выполнять необходимые действия и завершаться. Название: Re: Действие по выходу из консольного приложения Отправлено: __Heaven__ от Октябрь 26, 2016, 15:12 В дополнение к комментарию Old
std::signal поможет. Название: Re: Действие по выходу из консольного приложения Отправлено: ksk- от Октябрь 26, 2016, 19:13 По нажатию Ctrl+C в консоли, процессу отправляется сигнал SIGINT.
В обработчике сигнала можно записать что-то вроде: Код
Далее можно обработать выход из приложения так: Код
|