2 回答

TA貢獻(xiàn)1871條經(jīng)驗 獲得超13個贊
fork 實際上是操作系統(tǒng)提供的系統(tǒng)調(diào)用 (syscall),它是由操作系統(tǒng),比如你在linux系統(tǒng)上,就要看內(nèi)核源碼。
至于程序中我們使用的 fork 接口本身,是由標(biāo)準(zhǔn)C庫,libc 實現(xiàn)的,它其實很簡單,直接調(diào)用了操作系統(tǒng)提供的系統(tǒng)調(diào)用。如果你是想看這個,去下載 glibc 源碼找吧,不過沒什么意義,對于系統(tǒng)調(diào)用來說,libc只是起個二傳手的作用,自己什么都不做。
在linux內(nèi)核源碼中 linux-2.6.32.10/arch/x86/kernel/syscall_table_32.S 中是所有系統(tǒng)調(diào)用接口定義的地方。 搜索之后你會發(fā)現(xiàn) sys_fork 最終調(diào)用了 do_fork
再在 linux-2.6.32.10/kernel/fork.c 可以看到 do_fork的實現(xiàn)。
所以具體的代碼就在 kernel/fork.c 里了。
注意,你必須下載kernel源碼才能找到上面提到的信息。

TA貢獻(xiàn)1815條經(jīng)驗 獲得超6個贊
fork 實際上是操作系統(tǒng)提供的系統(tǒng)調(diào)用 (syscall),它是由操作系統(tǒng),比如你在linux系統(tǒng)上,就要看內(nèi)核源碼。
至于程序中我們使用的 fork 接口本身,是由標(biāo)準(zhǔn)C庫,libc 實現(xiàn)的,它其實很簡單,直接調(diào)用了操作系統(tǒng)提供的系統(tǒng)調(diào)用。如果你是想看這個,去下載 glibc 源碼找吧,不過沒什么意義,對于系統(tǒng)調(diào)用來說,libc只是起個二傳手的作用,自己什么都不做。
在linux內(nèi)核源碼中 linux-2.6.32.10/arch/x86/kernel/syscall_table_32.S 中是所有系統(tǒng)調(diào)用接口定義的地方。 搜索之后你會發(fā)現(xiàn) sys_fork 最終調(diào)用了 do_fork
再在 linux-2.6.32.10/kernel/fork.c 可以看到 do_fork的實現(xiàn)。
所以具體的代碼就在 kernel/fork.c 里了。
注意,你必須下載kernel源碼才能找到上面提到的信息。
添加回答
舉報