免费注册 查看新帖 |

Chinaunix

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

unix semop() [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-27 10:14 |只看该作者 |倒序浏览
There are two *.c.
main.c{
semid=semget(mykey,size,IPC_CREAT|0777)
short initarray[4],outarray[4];
        initarray[0]=5;
        initarray[1]=10;
        initarray[2]=0;
        initarray[3]=0;
                                                                                
        semctl(semid,4,SETALL,initarray);
        semctl(semid,4,GETALL,outarray);
        printf("sem init vals %d %d %d %d\n",
        outarray[0],outarray[1],outarray[2],outarray[3]);

}
gcc -o main main.c
./main
=>5,10,0,0
It is right!
then r.c
{
if((semid=semget(thekey,0,0))==-1)
        {
            printf("fail to creat semphore with the key!");
        }
short outarray[4];
        semctl(semid,4,GETALL,outarray);
         printf("sem init vals %d %d %d %d\n",
        outarray[0],outarray[1],outarray[2],outarray[3]);

struct sembuf get_se;

        get_se.sem_op=-1;
        get_se.sem_flg=SEM_UNDO;

        get_se.sem_num=0;  
        semop(semid,&get_se,1);
short outarray[4];
        semctl(semid,4,GETALL,outarray);
         printf("sem init vals %d %d %d %d\n",
        outarray[0],outarray[1],outarray[2],outarray[3]);



}
gcc r.c
./a.out
5,10,0,0
4,10,0,0
IT is also right
then run ./a.out again
5,10,0,0
4,10,0,0
WHY?
I thought the result was
4,10,0,0
3,10,0,0

something is wrong with "zhong wen shu ru fa",hehe

论坛徽章:
0
2 [报告]
发表于 2007-01-27 17:29 |只看该作者

怎么没人回答啊???

就是想知道,信号量集在系统到底怎么存放的,还有信号量集是否允许几个同时连接?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP