Вы также можете проверить signal (), если все, что вам нужно, это способ остановить цикл и запустить конец функции программы.
Это зависит от того, что именно вы хотите сделать, но в целом:
A) Вы сохраняете вашу программу однопоточной и проверяете ввод с помощью неблокирующего ввода.
B) Вы создаете другой поток, который будет обрабатывать ввод и передавать результаты обратно в основной поток.