以下为linux环境.下的.操作系统“进程控制”实验相关部分:.
#include<.stdio.h>.
main()
{
int p1.,p2,i; 婚庆
. if(p1=fork()).
{
. . lockf(1,1,0);教育
.. for(i=0;i<5000;i++) .
. .printf("child %d\n",i);.
. lockf(1,0.,0);健康
}
else
{
. . if(p2=fork()) 建材
. . { 投资
. lockf(1,1,0).;.
. . for(i=0;i<5000;i++) printf("son %d\n",i);.
. . lockf(1,0,0);--------------彩票
. }[成人用品]
. else.
. { 教育
. lock.f(1,1,0);学习
for(i=0;i.<5000;i++) printf.("daughter %d\n",i);.
lockf(.1,0,0); 健康
. }.
}
}
这个实验的目的是想让学生体会到加上lockf的作用,可以互斥的显示在屏.幕上。即:完全输出child后完全输出son或者再完全输.出daughter。--------------彩票
但是真正做实验的时候,发现三个进程还是并.发的把结果显示在屏幕上,即:child输出到4000多行,就又开始输出son.了。。。。 建材
请问这是为什么呢?错在哪里呢?lo.ckf()不就是加锁,能够保.证互斥吗?--- 印刷
请高手回答,谢谢!