Использование PTrace для создания дампа файлов, открытых процессом

Я уже знаком и успешно сбросил файлы, открытые процессом, использующим strace. С учетом сказанного, производительность strace приводит к снижению производительности моего программного обеспечения, и я хотел бы реализовать оболочку с использованием C++ для своего программного обеспечения таким образом, чтобы ptrace собирал и создавал дамп файлов, открытых программным обеспечением.

Я нашел руководства о том, как прикреплять и изменять реестры, но это на самом деле ничем не помогает.

Цените помощь.


person Nisan Bahar    schedule 18.02.2018    source источник


Ответы (1)


В Linux вы можете получить доступ к списку всех открытых файлов в /proc/<pid>/fd. Этот каталог содержит только набор символических ссылок для каждого открытого файла; используя стандартную итерацию каталога, вы можете очень легко создать список открытых файлов, например. на терминале:

ls -l /proc/$(pidof bash)/fd/

Для создания оболочки C/C++ вы можете, например. используйте методы, описанные в этом связанном вопросе: Как перечислить файлы в каталоге программы C?

person Philipp Ludwig    schedule 01.03.2018