Привет Я пытаюсь создать системный вызов, который будет считать количество вилок, которые были вызваны. Я собирался изменить системный вызов fork, чтобы он имел счетчик, который будет отслеживать количество раз, когда был вызван fork(). Я планировал добавить старую переменную в fork.h, а затем увеличивать ее, когда вызывается fork.c. Я просто не понимаю, что происходит в fork.c вообще. Это даже правильный подход?Изменение системного вызова Fork()
4
A
ответ
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
, который возвращает ошибки. Помните, что вам нужно будет скомпилировать и перезагрузить это новое ядро.
Смежные вопросы
- 1. Применения системного вызова fork
- 2. Изменение системного вызова
- 3. Некоторое объяснение поведения системного вызова fork?
- 4. Почему странное поведение системного вызова fork?
- 5. Работа системного вызова fork() (C-программа)
- 6. Путаница относительно системного вызова fork() в C
- 7. Изменение кода системного вызова exit.c
- 8. Вилок вывод системного вызова:
- 9. Поведение системного вызова fork() в Linux в этом коде
- 10. Почему много PID печатаются при использовании системного вызова fork?
- 11. Как вычислить время выполнения для системного вызова fork() в C?
- 12. Что происходит на нижних уровнях после системного вызова fork?
- 13. вилка системного вызова не выходя
- 14. Ожидание завершения системного вызова
- 15. системного вызова() для вызова tkill()
- 16. измерение скорости системного вызова
- 17. Выполнение системного вызова
- 18. Стоимость системного вызова
- 19. сборка системного вызова неэффективная
- 20. Игнорирование системного вызова
- 21. Проблема системного вызова Sigsuspend
- 22. понимание системного вызова dup()?
- 23. Использование системного вызова open()
- 24. Объяснение системного вызова dup()
- 25. Получение значения системного вызова
- 26. Написание нового системного вызова
- 27. Чтение системного вызова Posix
- 28. Использование системного вызова read()
- 29. Код без системного вызова?
- 30. Внедрение собственного системного вызова
Вы хотите сделать это в общесистемной или просто внутри вашей собственной программы? –
Какая ОС вы используете? – Gabe
Я хочу считать все вилки всех процессов в моей системе. – ddd