Я работаю над встроенным решением, в котором работают два приложения: одно — пользовательский интерфейс, а другое — работает в фоновом режиме, предоставляя данные для пользовательского интерфейса.
Недавно я столкнулся с утечкой памяти или подобной ошибкой, из-за которой Linux убивает вторичный процесс, оставляя пользовательский интерфейс в остановленной ситуации, ничего не сообщая пользователю о том, что происходит. Я решил проблему, прочитав файл журнала Linux message
и печать программного обеспечения на терминале «Kill -myapp».
Мой вопрос: как я мог заметить такое событие (и другое подобное), происходящее от вторичного программного обеспечения, чтобы я мог правильно сообщить об этом пользователю и зарегистрировать его? Я имею в виду, что легко время от времени заглядывать в «дерево» процесса, чтобы увидеть, запущено ли вторичное приложение, и, если это не так, сообщить «произошло какое-то событие» в пользовательском интерфейсе, и также вероятно, что есть ошибка -система обработчика внутри вторичного приложения, которая заставляет его записывать в файл журнала то, что только что произошло, и заставлять пользовательский интерфейс время от времени читать этот файл для новых записей, но как приложение пользовательского интерфейса может знать более подробно, что происходит в таком большем количестве? внезапные события? (в данном случае «Linux убил процесс», но это может быть «канал сегментации» или любой другой) (и если есть другое, лучшее решение, что это «постоянное чтение файла журнала, созданного вторичным приложением», я лд тоже хотел бы знать)
Примечания: пользовательский интерфейс написан на C++/Qt, а дополнительное приложение — на C. Хотя решение с использованием библиотеки Qt приветствуется, я думаю, что для всего сообщества программистов было бы лучше, если бы было предложено более обобщенное решение.