LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 695|回复: 2

谁帮忙解释一下fork()这个系统调用?

[复制链接]
发表于 2003-7-23 13:53:34 | 显示全部楼层 |阅读模式
1.fork()产生的子进程从哪里开始运行?到哪里结束?
是fork()的地方开始吗?
2.是不是fork()产生的子进程在被系统调度的时候是不是跟父进程平等的地位?
如果父进程退出或者被杀死了,子进程会怎么样?
发表于 2003-7-23 15:08:31 | 显示全部楼层

系统调用fork

系统调用fork之后,内核在进程表中创建一个新条目,然后复制调用进程的(父进程)的内容:打开的文件描述符、堆栈部分、正文部分等。

内核角度分析:
    进程是系统进程表中的一项内容,内核根据进程表中记录的信息来执行一个进程,拷贝了父进程的内容之后,系统已经创建好了一个新子进程,因为这两个进程的堆栈内容相同,此时都是在调用函数fork过程中。内核修改这两个进程的堆栈内容,将父进程的返回值修改为子进程的的进程号,子进程的返回值修改为0。
发表于 2003-7-23 18:43:11 | 显示全部楼层
如果父进程在子进程结束之前退出,子进程会被init进程收养。
在置顶的论坛索引中有多进程编程的介绍,在linux编程常识中。自己先看看,不理解再问。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表