您好我正在尝试创建一个系统调用来计算被调用的分叉数。我打算更改fork系统调用,以便它有一个计数器来跟踪fork()被调用的次数。我计划在fork.h中添加一个静态变量,然后每次调用fork.c时都增加它。我根本不明白fork.c中发生了什么。这甚至是正确的方法吗?
答案 0 :(得分:9)
Linux内核已经保留了整个系统中分叉总数的计数。
copy_process()
执行的任务之一,其中涉及分叉的大部分工作,都是increment the total_forks
counter。
此计数器作为processes
中的/proc/stat
行(代码here)向用户地区公开。
答案 1 :(得分:1)
fork
的源代码可以在<linux kernel source tree>/kernel/fork.c
文件中找到。该函数是do_fork
。您可以在返回错误的else
语句之前添加代码。请记住,您必须使用这个新内核进行编译和重新启动。