Штудирую ncurses доки, там заюзаны сигналы, идти распыляться и штудировать все подряд не хочется, а вопросы появились. В целом сигналы понимаю, а вот мелочи - не очень. Такой код:
static void finish(int sig);
int
main(int argc, char *argv[])
{
...
    (void) signal(SIGINT, finish);      /* arrange interrupts to terminate */
...
    finish(0);               /* we are done */
}
static void finish(int sig)
{
    endwin();
    exit(0);
}
- 
Вызов endwin() в хендлере. Равзе это не говнокод? Как бы хз в каком состоянии находилась ncurses после последнего кванта проц времени, а тут дергается ее deinit.
 - 
Второй вопрос важнее - если закомментить exit() в хендлере, то что происходит с процессом после возврата из обработчика? Опыт показывает, что процесс после этого нормально не работает, но и не завршается совсем. Какая там магия? Что, если я хочу выполнить некое действие в хендлере и продолжить выполнение основного кода (установить некий exit_flag), как я должен это сделать (там какую-то функцию надо дернуть, да? Какую?).
 
Зы: начинаешь гуглить про сигналы, там тебе рассказывают про $ kill.
