По сути, такой функции нет, но Unix и Windows будут отправлять
сигнал (SIGHUP
под Unix, SIGBREAK
под Windows) всем
процессы в группе процессов, когда окно, в котором процесс
группа зависит закрыто. Так что все, что вам нужно сделать, это поймать сигнал и
установить флаг, который вы тестируете в цикле:
#ifdef _WIN32
int const sigClosed = SIGBREAK;
#else
int const sigClosed = SIGHUP;
#endif
volatile sig_atomic_t windowClosed = 0;
void signalHandler( int )
{
windowClosed = 1;
}
// ...
signal( sigClosed, signalHandler );
while ( windowClosed == 0 ) {
// ...
}
Если вы делаете какой-либо ввод с консоли в цикле, вы получите
будьте готовы к тому, что ввод потерпит неудачу (каким вы должны быть в любом случае).