@magali
На C/C++ вы можете отслеживать завершение процесса программы с помощью функций, предоставляемых операционной системой. Ниже приведены два популярных подхода:
- Сигналы операционной системы:
Включите обработку сигналов, связанных с завершением программы, с помощью функции signal(). Например, вы можете обработать сигнал SIGINT, который генерируется при нажатии клавиши Ctrl+C:
#include
void signalHandler(int signal) {
// Обработка сигнала завершения
}
int main() {
// Установите функцию-обработчик сигнала
signal(SIGINT, signalHandler);
// Ваш код программы
return 0;
}
Функция-обработчик будет вызываться в случае получения указанного сигнала, и вы можете выполнить необходимые действия перед завершением программы.
- Использование операционных функций:
В Windows вы можете использовать функцию SetConsoleCtrlHandler() для установки функции-обработчика событий завершения:
#include
BOOL WINAPI ConsoleHandler(DWORD ctrlType) {
// Обработка события завершения
return TRUE;
}
int main() {
// Установите функцию-обработчик событий завершения
SetConsoleCtrlHandler(ConsoleHandler, TRUE);
// Ваш код программы
return 0;
}
В Linux и Mac вы можете использовать функцию atexit() для регистрации функции, которая будет выполнена перед завершением программы:
#include
void exitHandler() {
// Обработка завершения программы
}
int main() {
// Регистрация функции-обработчика завершения
atexit(exitHandler);
// Ваш код программы
return 0;
}
Функция exitHandler() будет вызываться перед завершением программы, и вы можете выполнить необходимые действия.
Обратите внимание, что обработчики событий и функции-обработчики завершения должны быть определены в соответствующем глобальном или видимом области видимости для правильного выполнения.