标题: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: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-313019-1-1.html




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

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