Предоставление информации о состоянии из базового приложения c / cpp Linux - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь предоставить механизм запросов, аналогичный записи / proc для драйвера / модуля ядра в Linux, за исключением того, что у меня есть приложение для пользовательского пространства.

Это работает в Linux, c / cppприложение.Я хочу выполнить что-то вроде:

$ cat / proc / myapp / status

и в моем приложении вызывается функция, которая печатает несколько строк пользовательской информации о состоянии.

Очевидно, что я не могу использовать proc из приложения пользовательского пространства, но что может сделать нечто подобное из пользовательского приложения?Это встроенный Linux, поэтому, скорее всего, dbus недоступен

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Есть две вещи, которые нужно проработать.Одним из них является то, каким будет процесс, а другим - то, что будет выполнять процесс.

Что касается процесса, он может быть почти любым, что вы хотите.Например, вы можете отправить сигнал (например, SIGUSR1) процессу, и он записывает свое состояние в файл.У вас может быть локальный сокет домена UNIX, к которому вы подключаетесь, и он записывает свой статус.У вас есть много вариантов.

Во-вторых, что на самом деле будет выполнять процесс.Одним из способов было бы запустить ваше приложение с помощью специального параметра командной строки, например --status, и оно выполняет шаги, необходимые для получения статуса, и записывает их в стандартный вывод.Это позволит вам делать такие вещи, как MyApplication --status, чтобы увидеть статус, или MyApplication --status | SomeOther Application, чтобы отправить статус в другое приложение.

Вы можете просто открыть файл журнала, в который записывается статус, когда SIGUSR1 получено.Затем вы можете использовать версию tail -f <logfile>, а затем kill для отправки SIGUSR1 в ваше приложение.

Это ваше дело.Там нет "одного правильного пути".

0 голосов
/ 15 февраля 2019

Я думаю, что вы можете получить его с помощью приложения deamon.

Вы можете использовать библиотеку pthread в своем приложении, чтобы вы могли хранить последнюю информацию о любых файлах.

Хотя,должно быть, он сделал больше, чем используя файловую систему proc, вы можете делать то, что хотите.

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