zoukankan      html  css  js  c++  java
  • IPC 通信接口函数的名字

     

     
    IPC三种通信机制是指:信号量、共享内存、消息队列 ,管道和命名管道,socket套接字 
     
    信号量:通过操作系统中的PV操作来实现;
    共享内存:申请一块内存,进程A往共享内存中写,其他的进程就可以通过读出共享内存中的内容来获取进程A所传送的信息;
    消息队列:创建一个消息队列,进程A往队列里面写,那么进程B通过读队列中的容来获取进程A传送的信息。
     管道:
    具体的实现其实就是用三组函数来实现的,而且形式都是很有相似性的。
     
    信号量:
    #include
    int semget(key_t key,int num_sems,int sem_flgs);
    int semctl(int sem_id,int sem_num,int command...);
    int semop(int sem_id,struct sembuf *sem_ops,size_t num_sem_ops);
     
    每个函数的功能和参数的意义在手册中都能找到。
     
     
    1、semget                创建一个信号量或者获取一个已知信号量的键
    key:不相关的进程可以通过他来访问同一个信号量
    num_sems:需要的信号量数目。几乎总是1
    sem_flags:一组标志,例如IPC_CREAT;
    返回值是信号量标志符,给其他信号量函数使用
     
     
    2、semctl:
    sem_id:信号量标志符,semget的返回值
    sem_ops:信号量编号,一般取0
    command:   就不解释了,在手册中有详细的解释,我就偷偷懒吧。
     
    3、semop
    用于改变信号量的值
    struct sembuf{
    short sen_nums;            //信号量编号,一般取0
    short sem_op;               //一般-1是P操作,1是V操作
    short sem_flag;            //通常设置为UNDO
    }
     
     
     
    共享内存
    允许两个不像关的进程访问同一个逻辑地址
    #include
    1、int shmget(key_t key,size_t size,int shmflag);
    2、void *shmat(int shm_id,const void *shm_addr,int shm_flag);
    3、int shmctl(int shm_id,int cmd,struct shmid_ds *buf);
    4、int shmdt(const void *shm_addr);
     
    参数的常用值:
    1、shmflag:0666|IPC_CREAT
    2、shmaddr=0           shm_flag=0
    3、cmd=IPC_SET  cmd=IPC_RMID
     
     
     
     
    消息队列:
    提供从一个进程向另一个进程发送一个数据块的方法
    #include
    int msgget(key_t key,int msgflg);
    int msgctl(int magid,int cmd,struct msgid_ds *buf);
    int msgsnd(int msgid,void *msg_ptr,size_t msg_sz,int msgflag);
    int msgrcv(int msgid,void *msg_ptr,size_t msg_sz,long int msg_type,int msgflag);
     
     
    省略了许多的说明,这些函数使用都可以在手册中查到。OK! 偷下懒~
  • 相关阅读:
    C/C++学习笔记1
    好文章
    mosquitto.conf之log配置
    安装mosquitto报缺少dll文件的错误
    mysql分页性能
    mysql慢日志记录
    sql执行计划
    sql之临时表
    mysqldump
    最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
  • 原文地址:https://www.cnblogs.com/jkred369/p/6868259.html
Copyright © 2011-2022 走看看