问一个关于fock的问题

Soulic 2009-03-04 09:29:59
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>

int main(void) {
pid_t child;

if (!(child = fork())) {
printf("in child\n");
exit(0);
}

printf("in parent -- child is %d\n", child);

return 0;
}

以上程序段的输出可能是这样的吗?
in parent -- child is 3708
in child
如果可能,什么情况下会出现?
...全文
121 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiura 2009-03-06
  • 打赏
  • 举报
回复
LZ 是 掌柜,
难道是我们没理解到你的问题?
xhy_851221 2009-03-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 never_QL 的回复:]
我也有个问题
是不是linux中fork规定了先执行子进程?而不是不确定谁先执行?
[/Quote]
fork后父子进程先后顺序是不确定的
除非人为加入同步条件
go_go_vip 2009-03-05
  • 打赏
  • 举报
回复
使用wait 可以实现父进程的阻塞,如果不用的话就是说楼主的样子
Soulic 2009-03-05
  • 打赏
  • 举报
回复
上面已经说了,可以并行运行的
hotsnow1943 2009-03-04
  • 打赏
  • 举报
回复
谁先都有可能的

除非用vfork()

或者父进程用wait等子进程
  • 打赏
  • 举报
回复
in parent -- child is 3708
in child
很正常啊.fork后,子,父进程并行运行,谁先输出结果都正常.

#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>

int main(void) {
pid_t child;

if (!(child = fork())) {
sleep(2); //这样你就可以让父进程先输出了.
printf("in child\n");
exit(0);
}

printf("in parent -- child is %d\n", child);

return 0;
}

never_QL 2009-03-04
  • 打赏
  • 举报
回复
我也有个问题
是不是linux中fork规定了先执行子进程?而不是不确定谁先执行?

19,613

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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