Большинство приложений, которые не проваливаются, входят в какой-то цикл обработки событий, который допускает программирование на основе событий.
Например, при разработке для Win32 вы должны написать свою функцию WinMain для постоянной обработки новых сообщений до тех пор, пока она не получит сообщение WM_QUIT, сообщающее приложению о завершении. Этот код обычно принимает следующую форму:
// ...meanwhile, somewhere inside WinMain()
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
Если вы пишете игру, используя SDL , вы будете зацикливаться на событиях SDL до тех пор, пока не решите выйти, например, когда вы обнаружите, что пользователь нажал клавишу Esc. Некоторый код для этого может выглядеть следующим образом:
bool done = false;
while (!done)
{
SDL_Event event;
while (SDL_PollEvent(&event))
{
switch (event.type)
{
case SDL_QUIT:
done = true;
break;
case SDL_KEYDOWN:
if (event.key.keysym.sym == SDLK_ESCAPE)
{
done = true;
}
break;
}
}
}
Вы также можете прочитать о Демонах Unix и Службы Windows .