当前位置: 技术问答>linux和unix
关于创建子进程的问题
来源: 互联网 发布时间:2017-04-29
本文导语: 在Linux下我分别用fork和vfork函数创建子进程,输出父进程和子进程的进程号,fork()函数只输出了两个进程号;但是我用vfork()函数却不停的输出进程号,我仔细观察了后者的输出结果:父进程号只有一个,子进程...
在Linux下我分别用fork和vfork函数创建子进程,输出父进程和子进程的进程号,fork()函数只输出了两个进程号;但是我用vfork()函数却不停的输出进程号,我仔细观察了后者的输出结果:父进程号只有一个,子进程却又n个,直到退出程序,我搞不懂这是为什么?大家分析下,下面贴我的程序图和输出结果:
代码:
fork()函数输出结果:
vfork()函数输出结果:
代码:
fork()函数输出结果:
vfork()函数输出结果:
|
vfork只是保证子进程先执行而已!
fork无法保证那个进程首先指向而已!
理论上应该不会出现这种情况吧?楼主什么环境
fork无法保证那个进程首先指向而已!
理论上应该不会出现这种情况吧?楼主什么环境
|
问题就是你用了return,vfork, fork的子进程不能用return, 其实fork也有着个问题,你改成exit就好了。
|
不加exit语句,程序会一直循环执行下去,直到进程号被分配完才会退出。
|
理论上都会出现,不管fork, vfork,吧return换成exit也可以,放if里面也可以,没关系。