|
发表于 2003-6-8 15:05:01
|
显示全部楼层
菜鸟也来说一说.前几天刚被版主们打回原形.
乖乖地去看书了.
printf("pid=%d before getpid() in parent\n",pid);//这一段为什么运行了两遍
因为fork()后,子进程从被父进程唤醒的位置上继续它的执行.所以会执行两次.如果把这一句放在fork()前,就不会执行两次了.
我自己也有一个不明白的程序:
- #include <unistd.h>
- #include <stdio.h>
- main()
- {
- int i;
- static char buffer[10];
- if(fork()==0)
- {
- strcpy(buffer,"Child\n");
- }
- else
- {
- strcpy(buffer,"Parent\n");
- }
- for(i=0;i<5;i++)
- {
- sleep(1);
- printf("%s",buffer);
- }
- }
复制代码
运行的结果是Parent,Child交叉地显示.而且每显示一个都会显示回车.但我没有在printf中加入回车.
而且printf是先放在缓冲里,然后再显示.为什么不是五个Parent,五个Child一起显示出来呢? |
|