日期:2014-05-16  浏览次数:20696 次

关于创建子进程的问题
在Linux下我分别用fork和vfork函数创建子进程,输出父进程和子进程的进程号,fork()函数只输出了两个进程号;但是我用vfork()函数却不停的输出进程号,我仔细观察了后者的输出结果:父进程号只有一个,子进程却又n个,直到退出程序,我搞不懂这是为什么?大家分析下,下面贴我的程序图和输出结果:
代码:

fork()函数输出结果:

vfork()函数输出结果:
子进程 父进程

------解决方案--------------------
vfork只是保证子进程先执行而已!
fork无法保证那个进程首先指向而已!
理论上应该不会出现这种情况吧?楼主什么环境
------解决方案--------------------
问题就是你用了return,vfork, fork的子进程不能用return, 其实fork也有着个问题,你改成exit就好了。
------解决方案--------------------
不加exit语句,程序会一直循环执行下去,直到进程号被分配完才会退出。
------解决方案--------------------
理论上都会出现,不管fork, vfork,吧return换成exit也可以,放if里面也可以,没关系。