如果在程序中使用系统调用lockf()来给每个进程加锁,可以实现进程之间的互斥,观察并分析出现的现象.
参考程序:
#include <stdio.h>
#include <unistd.h>
main()
{
int p1,p2,i;
while((p1=fork()==-1);
if(p1==0)
{
lockf(1,1,0);
for(i=0;i<10;i++)
printf(“daughter %d\n”,i);
lockf(1,0,0);
}
else
{
while((p2=fork()==-1);
if(p2==0)
{
lockf(1,1,0);
for(i=0;i<10;i++)
printf(“son %d\n”,i);
lockf(1,0,0);
}
else
{
lockf(1,1,0);
for(i=0;i<10;i++)
printf(“parent %d\n”,i);
lockf(1,0,0);
}
}
}
------解决方案--------------------
这是操作系统的课程设计 楼主可在网上搜索一下
操作系统课程设计 进 程 管 理
操作系统进程
操作系统原理实验报告
进程管理