进程间通信

消息队列
      key_t ftok(char* pathname,char proj)    //获得键值
    返回文件名对应的键值。
    pathname:文件名、路径
    proj:项目名,不为0即可

      int msgget(key_t key,int msgflg)    //获取消息队列描述字
    key:键值,通过ftok获得
    msgflg:标志位    IPC_CREAT,IPC_EXCL,IPC_NOWAIT    例如 IPC_CREAT|0666;
    返回与键值对应的消息队列描述字
    
      int msgsnd(int msgid,struct msgbuf* msgp, int msgsz ,int msgflg) 
            //向消息队列中发送一条消息
    msqid    已打开的消息队列id
    msgp    存放消息的结构
        struct msgbuf
        {
            long mtype;        //消息类型,可以为int
            char mtext[1];    /消息数据的首地址,不一定是mtext[1]    ,
         }
    msgsz    消息数据长度
    msgflg    IPC_NOWAIT,当消息队列不够空间放要发送的消息时,指明msgsnd是否等待。
     消息收发的类型要一样
      int msgrcv(int msqid,struct msgbuf*msgp,int msgsz,long msgtyp,int msgflg)
        //从msqid代表的消息队列中读取一个msgtyp类型的消息,并把消息存储在msgp
        //指向的msgbuf结构中。 成功读取一条消息后,队列中的这条消息将被删除。

    
信号量
      int semget(key_t key,int nsems, int semflg)
    key    键值,由ftok获得
    nsem    指定打开或新创建的信号灯集中将包含信号灯的数目
    semflg    标识,同消息队列一样

      int semop(int semid, struct sembuf*sops, unsigned nsops)
        struct sembuf{
            unsigned short sem_num;    //要操作的信号量在信号量集里的编号
                            //第一个编号为0
            short sem_op;    //1为释放
            short sem_flg;    //IPC_NOWAIT,操作不满足时,不阻塞,返回并设定错误信息
                        //IPC_UNDO    程序结束时,释放信号量,避免程序在异常情况下结束时
                        //未将锁定的资源解锁,造成资源永远锁定。
        }
        sops    是一个操作数组,表明要进行什么操作
        nsops    sops所指向的数组的元素个数
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值