关于创建子进程的问题

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

fork()函数输出结果:

vfork()函数输出结果:
...全文
141 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
czc1009 2013-11-02
  • 打赏
  • 举报
回复
不加exit语句,程序会一直循环执行下去,直到进程号被分配完才会退出。
Carl_CCC 2013-11-02
  • 打赏
  • 举报
回复
问题就是你用了return,vfork, fork的子进程不能用return, 其实fork也有着个问题,你改成exit就好了。
Carl_CCC 2013-11-02
  • 打赏
  • 举报
回复
理论上都会出现,不管fork, vfork,吧return换成exit也可以,放if里面也可以,没关系。
max_min_ 2013-11-02
  • 打赏
  • 举报
回复
vfork只是保证子进程先执行而已! fork无法保证那个进程首先指向而已! 理论上应该不会出现这种情况吧?楼主什么环境
  • 打赏
  • 举报
回复
引用 2 楼 Idle_Cloud 的回复:
问题就是你用了return,vfork, fork的子进程不能用return, 其实fork也有着个问题,你改成exit就好了。
直接在if里面用exit吗?
  • 打赏
  • 举报
回复
引用 3 楼 czc1009 的回复:
不加exit语句,程序会一直循环执行下去,直到进程号被分配完才会退出。
那为什么fork不出现一直循环下去的情况呢????
  • 打赏
  • 举报
回复
引用 1 楼 max_min_ 的回复:
vfork只是保证子进程先执行而已! fork无法保证那个进程首先指向而已! 理论上应该不会出现这种情况吧?楼主什么环境
centos6.4版本

23,118

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧