2.4 KiB
Помогите с проблемой. Не завершается while
цикл при изменении переменной running
.
while (running) {
// loop
}
Использую библиотеку ulfius
для реализации REST API сервера.
Есть функция thread_server()
, которую из main()
запускаю в отдельном потоке,
в которой запускается ulfius
сервер.
pthread_t tid;
pthread_create(&tid, NULL, thread_server, (void *)&tid);
Сервер запускаю следующим образом:
int ret;
ret = ulfius_start_framework(&instance);
if (ret == U_OK) {
printf("Server started at %d.\n", PORT);
} else {
printf("Error starting server as %d port.\n", PORT);
}
while (running) {
printf("\r%b", running);
}
printf("Server halt.\n");
ulfius_stop_framework(&instance);
ulfius_clean_instance(&instance);
running
- глобальная переменная типа bool
.
В документации к библиотеке, чтобы сервер не схлопывался используется следующий код.
if (ret == U_OK) {
getchar();
}
Есть callback функция, которая вызывается при обращении к API,
в которой я проверяю отправленное пользователем значение, и если оно равняется quit
присваиваю переменной running
значение false
, чтобы сервер закрылся.
Если из цикла while (running) { printf("\r%b", running); }
убрать printf()
,
либо выполнять другие операции, например присвоение a = 1;
то сервер не закрывается,
хотя значение running
равняется 0
.
Я пишу утилиту для внутенного использования, которая общается с Arduino платой
посредством библиотеки libserialport
и в цикле читает данные.
Хочу, чтобы утилита по REST получала данные и отправляла их на плату, но не получается реализовать нормальное завершение программы, потому что сервер не умирает.
OS: Linux