Я создаю приложение, которое принимает на вход исполняемый файл, выполняет его и отслеживает динамическое распределение памяти среди других, чтобы помочь отследить ошибки памяти.
После прочтения имени исполняемого файла я создаю дочерний процесс, связываю исполняемый файл с моим модулем (который включает мою версию семейства функций malloc) и выполняю исполняемый файл, предоставленный пользователем. Родительский процесс будет состоять из графического интерфейса пользователя (с использованием инфраструктуры QT), где я хочу отображать предупреждения / ошибки / количество выделений.
Мне нужно сообщить количество mallocs / освобождает и серии предупреждающих сообщений в родительский процесс в режиме реального времени. После того, как приложение пользователя завершит выполнение, я хочу отобразить количество утечек памяти. (Я позаботился обо всем внутреннем кодировании, необходимом для этого, в общей библиотеке, с которой я ссылаюсь).
Real-Time:
У меня есть два разных подхода к передаче этой информации.
- Дочерний процесс записывает в 2 канала (1 для записи того, произошло ли выделение / освобождение, а другой для записи одного целого числа для обозначения предупреждающего сообщения).
- Я просто отправил сигнал, чтобы указать, произошло ли распределение. Также создайте сигналы для каждого из предупреждающих сообщений. Я сопоставлю их с фактическими предупреждениями (строками) в родительском процессе.
Является ли версия сигнала такой же эффективной, как использование трубы? Это возможно? Есть ли лучший выбор, так как я забочусь об эффективности:)
После того, как приложение пользователя завершит выполнение:
Мне нужно отправить всю структуру данных, которую я использую, чтобы отслеживать утечки памяти. Это может быть очень большим, поэтому я не уверен, какой метод IPC будет наиболее эффективным.
Спасибо за ваше время