Справочная информация:
Я относительно неопытный разработчик, пытающийся написать программное обеспечение для взаимодействия с контроллером движения PCI.Я использую C (скомпилированный с gcc) в Ubuntu Linux 18.04.
Программа, которую я пишу, должна регулярно проверять незапрошенные сообщения о состоянии, отправляемые контроллером движения (примерно раз в секунду), и отображать любыесообщения, которые он находит на экране терминала (для которого я использую библиотеку ncurses
).
Что у меня есть:
Прямо сейчас, чтобы сделать это,Я вызываю функцию, которая проверяет наличие нежелательных сообщений в цикле while.Код примерно сродни:
while (1)
{
// check for messages from PCI and store them in a traffic buffer
checkForMessages(PCIconnection, trafficBuffer);
// output the traffic buffer to the screen
printf("%s", trafficBuffer);
}
Что мне нужно:
Мне нужно, чтобы пользователю было предложено ввести данные таким образом, чтобы они могли завершитьпетля.Например, пользователь может ввести end
, что приведет к остановке цикла и продолжению программы.
Проблема:
Я не знаю способачтобы достичь этого, не помещая fgets
в цикл while, заставляя программу останавливаться и ждать, пока пользователь не введет что-то на каждой итерации цикла.
Я искал решение, но не нашелудалось найти обсуждение о том, как добиться функциональности, в которой я нуждаюсь.Открытие нового потока или процесса кажется шагом в правильном направлении?
Я открыт для полной реструктуризации своего кода, если то, что я сейчас делаю, является плохой практикой.
Спасибо залюбая помощь!