2011-02-09 3 views
4

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

+0

Вы хотите сделать это в общесистемной или просто внутри вашей собственной программы? –

+0

Какая ОС вы используете? – Gabe

+0

Я хочу считать все вилки всех процессов в моей системе. – ddd

ответ

9

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

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

Этот счетчик открыт для пользователей в качестве линии processes в /proc/stat (по коду here).

1

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

Смежные вопросы