2 回答
TA贡献1871条经验 获得超13个赞
fork 实际上是操作系统提供的系统调用 (syscall),它是由操作系统,比如你在linux系统上,就要看内核源码。
至于程序中我们使用的 fork 接口本身,是由标准C库,libc 实现的,它其实很简单,直接调用了操作系统提供的系统调用。如果你是想看这个,去下载 glibc 源码找吧,不过没什么意义,对于系统调用来说,libc只是起个二传手的作用,自己什么都不做。
在linux内核源码中 linux-2.6.32.10/arch/x86/kernel/syscall_table_32.S 中是所有系统调用接口定义的地方。 搜索之后你会发现 sys_fork 最终调用了 do_fork
再在 linux-2.6.32.10/kernel/fork.c 可以看到 do_fork的实现。
所以具体的代码就在 kernel/fork.c 里了。
注意,你必须下载kernel源码才能找到上面提到的信息。
TA贡献1815条经验 获得超6个赞
fork 实际上是操作系统提供的系统调用 (syscall),它是由操作系统,比如你在linux系统上,就要看内核源码。
至于程序中我们使用的 fork 接口本身,是由标准C库,libc 实现的,它其实很简单,直接调用了操作系统提供的系统调用。如果你是想看这个,去下载 glibc 源码找吧,不过没什么意义,对于系统调用来说,libc只是起个二传手的作用,自己什么都不做。
在linux内核源码中 linux-2.6.32.10/arch/x86/kernel/syscall_table_32.S 中是所有系统调用接口定义的地方。 搜索之后你会发现 sys_fork 最终调用了 do_fork
再在 linux-2.6.32.10/kernel/fork.c 可以看到 do_fork的实现。
所以具体的代码就在 kernel/fork.c 里了。
注意,你必须下载kernel源码才能找到上面提到的信息。
添加回答
举报