当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 6 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [问]关于fork()调用
帖子发表于 : 2009-03-25 19:35 

注册: 2008-09-06 10:04
帖子: 509
送出感谢: 0 次
接收感谢: 0 次
操作系统设计与实现,引言:
while(TRUE) {
read_command(command, paramenters);
if( fork() != 0 ){
/*Parent code.*/
waitpid(-1, &status, 0);
} else {
/*Child code*/
execve(command, paramenters, 0);
}

这个fork()函数……,到底谁调用了fork(),不是SHELL吗(SHELL相当于一个应用程序吧
)。
那fork()岂不是肯定返回一个正数了,因为SHELL是父进程。

还有看这句话
“fork() 的返回值对子进程为0,对父进程为一个正数,即子进程的标识号。”
fork()的返回值还有“对谁”的说法……
额……我不知道该怎么问下去了,望高手指点。


页首
 用户资料  
 
2 楼 
 文章标题 : Re: [问]关于fork()调用
帖子发表于 : 2009-03-25 19:44 

注册: 2006-03-10 15:10
帖子: 3182
地址: xi'an China
送出感谢: 0 次
接收感谢: 2
建议找本书unix或linux编程的书看看,或者google或baidu等稍微搜一下 fork


页首
 用户资料  
 
3 楼 
 文章标题 : Re: [问]关于fork()调用
帖子发表于 : 2009-03-25 22:59 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
lz 没理解什么叫 fork

fork 就是分支, 就是一个变两个, 所以需要通过返回值判断谁是调用 fork 的人, 谁是被 fork 出来的.


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
4 楼 
 文章标题 : Re: [问]关于fork()调用
帖子发表于 : 2009-03-26 15:29 

注册: 2008-09-06 10:04
帖子: 509
送出感谢: 0 次
接收感谢: 0 次
BigSnake.NET 写道:
lz 没理解什么叫 fork

fork 就是分支, 就是一个变两个, 所以需要通过返回值判断谁是调用 fork 的人, 谁是被 fork 出来的.


两个分支都执行到相同的代码段吗?

fork()返回前子进程已经创建好了,并且在等待fork()返回?


页首
 用户资料  
 
5 楼 
 文章标题 : Re: [问]关于fork()调用
帖子发表于 : 2009-03-29 20:21 

注册: 2009-02-24 19:39
帖子: 159
送出感谢: 0 次
接收感谢: 0 次
chenwl 写道:
BigSnake.NET 写道:
lz 没理解什么叫 fork

fork 就是分支, 就是一个变两个, 所以需要通过返回值判断谁是调用 fork 的人, 谁是被 fork 出来的.


两个分支都执行到相同的代码段吗?

fork()返回前子进程已经创建好了,并且在等待fork()返回?

The fork() system call creates a new process by duplicating an existing one. The process that calls fork() is the parent, whereas the new process is the child. The parent resumes execution and the child starts execution at the same place, where the call returns.


页首
 用户资料  
 
6 楼 
 文章标题 : Re: [问]关于fork()调用
帖子发表于 : 2009-03-29 21:26 

注册: 2008-09-06 10:04
帖子: 509
送出感谢: 0 次
接收感谢: 0 次
anewbie 写道:
chenwl 写道:
BigSnake.NET 写道:
lz 没理解什么叫 fork

fork 就是分支, 就是一个变两个, 所以需要通过返回值判断谁是调用 fork 的人, 谁是被 fork 出来的.


两个分支都执行到相同的代码段吗?

fork()返回前子进程已经创建好了,并且在等待fork()返回?

The fork() system call creates a new process by duplicating an existing one. The process that calls fork() is the parent, whereas the new process is the child. The parent resumes execution and the child starts execution at the same place, where the call returns.

:em11

明白了


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 6 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译