| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1626 人关注过本帖
标题:getpid() fork()的问题
只看楼主 加入收藏
yuyigudulk
Rank: 1
等 级:新手上路
帖 子:8
专家分:2
注 册:2010-6-27
结帖率:33.33%
收藏
已结贴  问题点数:5 回复次数:2 
getpid() fork()的问题
fork()函数用于复制父进程,这个父进程是指当前进程吗?
如果是当前进程,为什么我pid=fork()获得的ID和pid=getpid()获得的ID不一样
pid=fork()与ppid=getppid()获得的ID也不一样
getpid()和getppid()也是分别获得当前的ID和父ID
搜索更多相关主题的帖子: fork getpid 
2010-07-15 00:16
hfy19
Rank: 1
等 级:新手上路
帖 子:12
专家分:2
注 册:2006-10-24
收藏
得分:2 
fork()结果 三种:
            1、<0 出错
            2、=0 子进程
            3、>0 父进程
getpid()用来取得目前进程的进程识别码
2010-07-15 15:06
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1685
专家分:4252
注 册:2007-12-27
收藏
得分:2 
首先你得理解一个fork调用会返回两次,分别在父子进程中返回,并且返回值是不同的。
而fork以下的代码如果不加控制,就会分别在父子进程里面都继续执行下去。
要有效区分“当前”进程是父进程还是子进程的方法就是查看fork的返回值。
假如有一个进程,其pid为100,那么在这个进程来里面调用getpid()应该得到100。
接下来,该进程调用了fork(),产生了pid为101的子进程,那么
在原有的100进程(父)中,fork的返回值是101,也就是子进程的pid;
    再次getpid()得到100,getppid()将得到祖父进程的pid,也就是既不是100,也不是101的其它值。
在新生的101进程(子)中,刚才产生了它本身的fork的返回值是0;
    再次getpid()得到101,getppid()将得到100。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2010-07-15 21:58
快速回复:getpid() fork()的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032021 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved