Всем доброе время суток! Начал разбираться с сокетами, столкнулся с проблемой выхода из программы во время того, когда сервер ожидает подключения.
Программа работает в постоянном цикле "while(cycle)" до тех пор, пока cycle = true. При получении сигналов
signal(SIGTERM, &prog_close);
signal(SIGKILL, &prog_close);
signal(SIGINT, &prog_close);
запускается функция в которой, кроме прочего, значение cycle становится равным false, соответственно цикл завершается, программа закрывается. Но если получен сигнал во время того, когда сокет сервер ждет подключения клиента (в этот момент программа замирает), то и выход из цикла происходит только после подключния клиента, а если этого подключения не будет?
Придумал другой вариант, делаю fork() и в дочерней программе работаю с клиентами используя "while(true)", а родительская программа, в свою очередь, в цикле while(cycle) ожидает сигналов. Если получен сигнал, основная программа закрывает дочернюю и закрывается сама, все работает, вот только мне кажется что есть более элегантное решение данной задачи. Т.к. новичок, может кто-то подскажет красивое решение?
Спасибо!
P.S.: O_NONBLOCK - не вариант.