Изменение системного вызова Fork () - PullRequest
4 голосов
/ 10 февраля 2011

Привет. Я пытаюсь создать системный вызов, который будет подсчитывать количество вызванных форков. Я собирался изменить системный вызов fork так, чтобы он имел счетчик, который будет отслеживать количество вызовов fork (). Я планировал добавить статическую переменную в fork.h, а затем увеличивать при каждом вызове fork.c. Я просто не понимаю, что происходит в fork.c вообще. Это даже правильный подход?

Ответы [ 2 ]

9 голосов
/ 10 февраля 2011

Ядро Linux уже ведет подсчет общего количества вилок в системе в целом.

Одна из задач, выполняемых copy_process(), которая выполняет многоработа, связанная с разветвлением, заключается в увеличении счетчика total_forks .

Этот счетчик отображается для пользовательского пространства в виде строки processes в /proc/stat (с помощью кода здесь ).

1 голос
/ 10 февраля 2011

Исходный код для fork можно найти в файле <linux kernel source tree>/kernel/fork.c. Функция do_fork. Вы можете добавить свой код прямо перед оператором else, который возвращает ошибки. Помните, что вам придется скомпилировать и перезагрузиться с этим новым ядром.

...