Doporucuji vam dokumentaci k resizeterm(3X). Slo by asi treba proste v signal handleru ungetch()nout KEY_RESIZE, a dalsi getch() by si toho melo vsimnout.
Co se tyce toho, aby smycky nezraly 99% CPU, lze tomu predejit obecne tak, ze do te smycky umistete nejaky bod, ve kterem se jadro muze zastavit, dokud se nestane "neco zajimaveho", na co cekate.
Napriklad pokud se chcete zastavit, dokud nedostanete nejaky signal, muzete pouzit pause(). Ve vasem pripade ale spise cekate, dokud se neco neobjevi na standardnim vstupu, tedy cekate na udalost na nejakem filedescriptoru. K tomu muzete vyuzit bud select() nebo poll(), podle chuti :).