Ctrl + C отправит вашей программе сигнал (SIGINT), если вы НЕ настроите обработчик, это приведет к выходу вашей программы. Так что все, что вам нужно сделать, это написать
do {
//computation
} while(1);
и это будет делать то, что вы хотите
РЕДАКТИРОВАТЬ: Чтобы сделать то, что вы ДЕЙСТВИТЕЛЬНО хотели, не нуждаясь в обработчике сигналов и избегая действий, которые могут привести к оптимизации компилятора, нарушающей ваш код, вы можете сделать это:
#include <signal.h>
/* ... */
int main() {
sigset_t set, oldset;
sigemptyset(&set);
/* ... */
sigaddset(&set, SIGINT);
sigprocmask(SIG_BLOCK, &set, &oldset);
do {
sigset_t pending_set;
/* ... */
sigpending(&pending_set);
} while(!sigismember(&pending_set, SIGINT));
sigprocmask(SIG_SETMASK, &oldset, NULL);
/* ... */
}