红联Linux门户
Linux帮助

关于fork()函数的工作机制

发布时间:2008-09-18 00:04:19来源:红联作者:Dopsdck
  在看Linux源代码时,遇到的fork()函数实在是太奇怪了,调用一次,竟然会对子进程和父进程分别返回两个不同的值,令人费解,一个函数怎么会有两个返回值呢。从网上搜索终于找到了答案。如下:

  fork()并不是进行进程切换,而是复制一个当前进程。举例来说,假如初始进程号为100,当进入fork()系统调用后,操作系统就把100号进程一模一样地复制出来一个新的进程101号。所谓一模一样,是指100号进程与101号进程所包含的任何信息,例如变量的值,空间分配,特别是正在执行的语句等等都相同。这时你的一套代码便同时在这两个进程中执行,就象一个EXE文件被同时执行了两次一样。由于两个进程下一步要执行的语句都是从fork()返回,这时操作系统就特意让100号进程中的fork()返回101,而101号进程中的fork()返回0,这样一套代码就能够分辨清楚到底是处在哪个进程中了。
文章评论

共有 2 条评论

  1. shuangwen163 于 2008-09-18 11:11:18发表:

    真的吗?

  2. michrykitty 于 2008-09-18 10:51:23发表:

    :0wmjh(1