Работя върху вградено решение, при което работят две приложения: едното е потребителският интерфейс, а другото работи във фонов режим, предоставяйки данни за потребителския интерфейс.
Наскоро се натъкнах на изтичане на памет или подобна грешка, която кара Linux да убива вторичния процес, оставяйки потребителския интерфейс в спряна ситуация, без да казва нищо на потребителя какво се случва. Достигнах до проблема, като прочетох лог файла message
на Linux и разпечатката на софтуера на терминала „Kill -myapp“.
Въпросът ми е: как бих могъл да забележа такова събитие (и други подобни), идващо от вторичния софтуер, за да мога правилно да го докладвам на потребителя и да го регистрирам? Искам да кажа, че е лесно да преглеждате от време на време в „дървото“ на процеса, за да видите дали вторичното приложение работи и, ако не е, да докладвате за „случило се е някакво събитие“ в потребителския интерфейс и също така е възможно да има грешка -handler система във вторичното приложение, която го кара да записва в регистрационен файл какво току-що се е случило и кара потребителския интерфейс да чете този файл за нови записи от време на време, но как би могло приложението за потребителски интерфейс да знае с по-добри подробности какво се случва в такива повече резки събития? (в този случай „Linux уби процеса“, но може да е „сегментиращ канал“ или друг) (и ако има друго, по-добро решение, че това „постоянно чете лог файл, създаден от второстепенното приложение“, аз също бих искал да знам)
Забележки: потребителският интерфейс е написан на C++/Qt, а вторичното приложение е на C. Въпреки че решение, използващо библиотеката на Qt, би било добре дошло, мисля, че би било по-добре за цялата програмистка общност, ако се даде по-обобщено решение.