Передача значений формы http в программу на C - PullRequest
0 голосов
/ 24 июля 2010

Мне было поручено обновить встроенное приложение, написанное на C. Приложение настраивается через веб-интерфейс.

Когда пользователь изменяет веб-приложение, файл записывается в /var/www/settings.json, а файлПрикосновение к /var/www/UPDATE_SETTINGS.

В основном цикле приложения проверяется, существует ли UPDATE_SETTINGS.Если он это делает, он анализирует settings.json с json-c, а затем удаляет UPDATE_SETTINGS.

. Это работает достаточно хорошо, однако мы бы предпочли перейти к архитектуре, управляемой событиями (возможно, libev), в которойsettings.json подается непосредственно в программу скриптом webapp на обычный старый порт UDP, а затем выполняет обратный вызов для выполнения обновления.

Каковы другие элегантные способы решения этой проблемы?Должны ли мы просто придерживаться текущего подхода?

Ответы [ 2 ]

1 голос
/ 19 августа 2010

Просто используйте inotify .Он был создан для таких случаев, как ваш.

0 голосов
/ 24 июля 2010

Я делаю некоторые предположения здесь.

1) Вы постоянно подключены к Интернету со встроенным устройством. 2) ваше устройство может устанавливать прерывания для таких вещей, как «USART RX buffer not empty»

примечание: в зависимости от того, какое оборудование вы используете, вы можете настроить прерывания для таких вещей, как пинги и другие вещи, это может быть еще одним способом прерывания работы встроенного устройства.

если эти два предположения верны, вы могли бы сделать это, иметь другой «скрипт» на сервере или компьютере, где-нибудь, который следит за /var/www/settings.json на предмет изменений, которые вы можете использовать как rsync для отслеживания изменений. этот «скрипт», когда он замечает, что изменения файла json будут связываться со встроенным устройством с помощью tcp / ip, вы можете либо пропинговать устройство, либо просто отправить файл поверх. Если вы можете установить прерывание USART на встроенном устройстве, то устройство сможет обнаружить поступающие данные и, следовательно, ответить, либо прочитав данные, которые вы отправляете, либо перейдя на веб-сайт, чтобы загрузить файл json для анализа.

таким образом у вас будет встроенное устройство для накопителя событий, и вы не потратите время на проверку того, изменился ли этот файл json.

Надеюсь, это поможет

...