免费注册 查看新帖 |

Chinaunix

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

linux操作系统进程实验问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-22 20:28 |只看该作者 |倒序浏览
以下为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
                {
                lockf(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了。。。。
请问这是为什么呢?错在哪里呢?lockf()不就是加锁,能够保证互斥吗?

请高手回答,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP