免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2093 | 回复: 6
打印 上一主题 下一主题

用fork()创建进程的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-29 15:04 |只看该作者 |倒序浏览
刚学Linux下C编程,对fork()很不理解
int main()
{
 int i;
 if (fork() == 0)
 {
  for (i = 1; i < 3; i++)
   printf("This is child process\n");
 }
 else
 {
  for (i = 1; i < 3; i++)
   printf("This is parent process\n");
 }
}


上面这个小程序的运行结果很让我不知所云,哪位有时间给解释下吧
在我机器上的运行结果是
this is a child process
this is a child process
this is a parent process
this is a parent process
this is a parent process

论坛徽章:
0
2 [报告]
发表于 2008-03-29 15:11 |只看该作者
还有这个:

int main()
{
 int i;
 for (i = 0; i < 2; i++)
 {
  if (fork() == 0)
  {
   printf("This is child process\n");
  }
  else
  {
   printf("This is parent process\n");
  }
 }
}


为什么会有这样的输出?
this is a child process
this is a child process
this is a parent process
this is a parent process
this is a child process
this is a parent process

论坛徽章:
1
天蝎座
日期:2013-08-25 10:27:22
3 [报告]
发表于 2008-03-29 15:31 |只看该作者
printf("This is child process\n");

在我机器上的运行结果是
this is a child process   ?

表示怀疑

论坛徽章:
0
4 [报告]
发表于 2008-03-29 15:34 |只看该作者
原帖由 yangsf5 于 2008-3-29 15:31 发表
printf("This is child process\n");

在我机器上的运行结果是
this is a child process   ?

表示怀疑


不好意思
写错了,
不过运行结果真是这种样式

论坛徽章:
0
5 [报告]
发表于 2008-03-29 16:11 |只看该作者

回复 #1 独步天下 的帖子

http://linux.about.com/od/commands/l/blcmdl2_fork.htm

建议参考上述文档
unix运行是可以的
linux的fork()机制不同于unix

论坛徽章:
0
6 [报告]
发表于 2008-03-29 21:47 |只看该作者
要全面理解fork需要对进程管理和内存管理有一定的了解,比较麻烦
先知道fork后就从一个进程变成两个进程,父进程中fork返回子进程pid,
子进程fork返回0就可以了

论坛徽章:
0
7 [报告]
发表于 2008-03-30 20:22 |只看该作者
fork()调用一次,返回两次...
调用后到底是子进程先执行,还是父进程先执行,要看系统.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP