Подскажите плиз...Как перехватить или получить сигнал о вызовах следующих функций.
open();
close();
read();
write();fopen();
fclose();
fread();
fwrite();
И Т.Д.Thenks...
f* - библиотечные функции, они в свою очередь вызывают функции из первой группы. для перехвата вызова этих функций надо лезть в ядро, написав, допустим модуль с функциями - обертками, подменяющий одноименные системные вызовы (по этому принципу работает много интересного софта, к примеру systrace).
Можно воспользоваться механизмом LD_PRELOAD: делаете библиотеку-враппер, в которой реазизуете функции, которые хотите перехватить, при необходимости вызываете из них (в конце) "обычные" обработчики с помощью dlsym(3). Хорошо, если в вашей системе можно сделать что-то вроде dlsym(RTDL_NEXT, "open"). Запускать программу нужно установив переменную среды LD_PRELOAD так, чтобы она указывала на библиотеку. Что-то вроде:LD_PRELOAD=./mywrapper.so myprog
И будет вам счастье.
>Можно воспользоваться механизмом LD_PRELOAD: делаете библиотеку-враппер, в которой реазизуете функции, которые хотите
>перехватить, при необходимости вызываете из них (в конце) "обычные" обработчики с
>помощью dlsym(3). Хорошо, если в вашей системе можно сделать что-то вроде
>dlsym(RTDL_NEXT, "open"). Запускать программу нужно установив переменную среды LD_PRELOAD так, чтобы
>она указывала на библиотеку. Что-то вроде:
>
>LD_PRELOAD=./mywrapper.so myprog
>
>И будет вам счастье.Вот оно, оказывается, как бывает! :)
>>Хорошо, если в вашей системе можно сделать что-то вроде dlsym(RTDL_NEXT, "open"). Запускать программу нужно установив переменную среды LD_PRELOAD так, чтобы она указывала на библиотеку. Что-то вроде:А в каких системах это поддерживается?