posix消息队列

    技术2022-05-20  33

    1.创建一个posix消息队列,队列名又标准输入传进

    增加排他性选项;

     

    问题:

    {

    vi J 把下一行合并到这一行尾      u 恢复删除内容      dw 删除一个单词       main 的入参 int argc, char **argv mq_open的第二第三个参数:flags 是对消息队列的属性,读写创建排他等,mode是对组,用户的权限设定; Getopt用法,  放在while中 标志位的头文件O_RDWR ,O_CREAT等,在UNIX下是在fcntl.h里 main函数入参char **argv写为char * argv,在用到argv的地方报错: Function argument assignment between types "char* const*" and "char*" is not allowed. 函数结束位exit(0); optind 在 stdio.h中 while (c= getopt(argc,argv,"e")) while((c=getopt(argc,argv,"e"))!=-1)  要加括号 {  switch(c)  {      case 'e':       //加'e'        oflag|=O_EXCL        break;             default:          break;   }    argv[optind]    输入程序名执行的时候,optind为1  argc 为1    加入文件名后 creatP ./dd  输入程序名执行的时候,optind为1  argc 为2  argv[1]为./dd  argv[0]为creatP ,数组下标从0开始   } HP_UX 下编译 dbuild:/dbuild/zhuwei>cc -o  creatP creatP.c ld: Unsatisfied symbol "mq_close" in file creatP.o ld: Unsatisfied symbol "mq_open" in file creatP.o 加了#include <sys/mqueue.h> 在每个环境下使用mq_open等函数的时候,先man一下, 因为定义的头文件不同

     

     

    阻塞在:

     

    通过与V消息队列的对比,AIX,HP_UNIX 对V消息队列的支持比较好,例如 msgget的定义都在同一个头文件,

    对mq_open HP_UNIX在sys/mqueue.h,AIX在<mqueue.h>

     

     

    在AIX 下建立了消息队列,消息队列名对应的文件找不到!!!

    }

     

     

     

     

     

    2.从系统中删除一个消息队列

    问题:

    {

    一个消息队列建立完后,可以close一次,但是还存在, 不可以第二次close,用unlink删除;

     

     

    }

     

    3.获取一个消息队列的属性

     

    4.创建一个posix消息队列,队列名又标准输入传进

    增加排他性选项;

    创建的时候指定 消息队列最大消息数,每个消息的大小;由标准输入传进

     

    5.向一个队列中增加一个消息

     

    6.从一个消息队列中读一个消息,增加非堵塞性;要获取队列的属性,才可分配空间

     

    7.调用sysconf函数,输出 一个进程可打开多少消息队列, 任意消息的最大优先级


    最新回复(0)