| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 459 人关注过本帖
标题:ubuntu环境下的PV原语中的互斥
取消只看楼主 加入收藏
kidangel666
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:93
专家分:139
注 册:2010-9-15
结帖率:78.95%
收藏
已结贴  问题点数:20 回复次数:2 
ubuntu环境下的PV原语中的互斥
程序代码:
#include <stdio.h>
#include <sys/sem.h>
#include <unistd.h>

int p(int semid)
{
    struct sembuf sops;
    sops.sem_op = -1;
    sops.sem_num = 0;
    sops.sem_flg = SEM_UNDO;

    semop(semid, &sops, 1);

    return 0;
}

int v(int semid)
{
    struct sembuf sops;
    sops.sem_op = +1;
    sops.sem_num = 0;
    sops.sem_flg = SEM_UNDO;

    semop(semid, &sops, 1);

    return 0;
}

int sem_init(int semid, int val)
{
    int ret;

    ret = semctl(semid, 0, SETVAL, val);

    return 0;
}

int mutual_exclusive()
{
    int ret;
    int semid;
    pid_t pid;

    semid = semget(IPC_PRIVATE, 1, IPC_CREAT);
    if (semid < 0) {
        perror("semget");
        return -1;
    }

    ret = sem_init(semid, 1);
    if (ret < 0) {
        perror("semctl");
        return -1;
    }
    printf("%d\n", semctl(semid, 0, GETVAL));
    pid = fork();
    if (pid < 0) {
        perror("fork");
        return -1;
    }

    if (pid == 0) {
        while(1) {
            p(semid);
            printf("this is child1\n");
            printf("this is child2\n");
            printf("this is child3\n");
            v(semid);
        }
    } else {
        while(1) {
            p(semid);
            printf("this is parent1\n");
            printf("this is parent2\n");
            printf("this is parent3\n");
            v(semid);
        }
    }

    return 0;
}

int main()
{
    mutual_exclusive();
    return 0;
}





我想要的结果是输出child和parent是3个为一组的输出,但是结果是交叉输出的,没看出问题所在,求指教,谢了
搜索更多相关主题的帖子: ubuntu 
2012-12-25 21:51
kidangel666
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:93
专家分:139
注 册:2010-9-15
收藏
得分:0 
代码其实没问题,是执行的时候有权限问题要加sudo
2013-01-15 16:35
kidangel666
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:93
专家分:139
注 册:2010-9-15
收藏
得分:0 
回复 楼主 kidangel666
请注意我的标题是在ubuntu下面的 你在windows下肯定是不行的啊
2013-01-15 16:36
快速回复:ubuntu环境下的PV原语中的互斥
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017324 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved