你好,我正在尝试创建一个系统调用来计算被调用的 fork() 的次数。我打算改变 fork() 系统调用,使其具有计数器,以便跟踪 fork() 被调用的次数。我计划在 fork.h 中添加一个静态变量,并在每次调用 fork.c 时将其递增。但是我完全不理解 fork.c 中正在发生的事情。这是正确的方法吗?
你好,我正在尝试创建一个系统调用来计算被调用的 fork() 的次数。我打算改变 fork() 系统调用,使其具有计数器,以便跟踪 fork() 被调用的次数。我计划在 fork.h 中添加一个静态变量,并在每次调用 fork.c 时将其递增。但是我完全不理解 fork.c 中正在发生的事情。这是正确的方法吗?
copy_process()
执行的任务之一是增加total_forks
计数器,它涉及到fork的大部分工作。/proc/stat
中的processes
行公开(通过此处的代码)。fork
的源代码可以在 <linux kernel source tree>/kernel/fork.c
文件中找到。该函数是 do_fork
。您可以在返回错误的 else
语句之前添加您的代码。请记住,您需要使用这个新内核进行编译和重启。