微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我收到访问服务器 mqueue 的错误

如何解决为什么我收到访问服务器 mqueue 的错误

我尝试将消息从 client.c 发送到 server.c,我没有为客户端创建 msg 队列,我只是尝试使用在 server 中创建的队列,它仍然像 daemon 一样运行。 如果服务器 mqueue 已经在运行,为什么我找不到它? 这里我的错误代码: /MAFILE_CLIENT_3153mq_open :没有这样的文件或目录 注意:我试着打个招呼或打个招呼,但系统总是删除它们;

'#define FILE_SERVER "/MAFILE_SERVER_89" '

int main(int argc,char* argv[]){
    mqd_t server_mq,client_mq;
    //declarer la structure des attributs de la file de message
    struct mq_attr atr;
    atr.mq_maxmsg = F_MAX_MSG;
    atr.mq_msgsize = F_MAX_SIZE;
    int errnum;
    int long_msg ;
    
    //Creer le message envoyé par le client
    //il doit contenir la base + le pid
    char file_Client[19];
    if((errnum =sprintf(file_Client,"%s_%d",FILE_CLIENT,getpid()))==-1){
        fprintf(stderr,"sprintf %s \n",strerror(errnum));
        exit(EXIT_FAILURE);
    }
    
    
    printf(file_Client);
    long_msg = strlen(file_Client)+1;
    fflush(stdout);
    //ouvrir la file de message  serveur 
    server_mq = mq_open(FILE_SERVER,O_WRONLY);
    
    if(server_mq == (mqd_t)-1){                     ///verifier  que mq_open s'est bien déroulé
        fprintf(stderr,"mq_open  du serveur : %s \n",strerror(errno));
        exit(EXIT_FAILURE);
    }

这是 server.c 代码: 他正在运行,等待客户端发送消息

#define FILE_SERVER "/MAFILE_SERVER_89"
#define MAX_MSG 10
#define MAX_MSG_SIZE 240


int main(int argc,char* argv[]){
    //initialiser les attributs de le file de message
    struct mq_attr mq_att_serv;
    mq_att_serv.mq_maxmsg =  MAX_MSG;   ///nombre de message est fixé a 10
    mq_att_serv.mq_msgsize = MAX_MSG_SIZE;  ///Taille maximale d'un seul message est fixé a 255 bit
    //déclarer les variables pour  la gestion d'erreur et de longueur  de message 
    int errnum,long_msg ;
    //ouverture et creation de la file 
    //de message du serveur 
    
    mqd_t file_server = mq_open(FILE_SERVER,O_RDONLY | O_CREAT,S_IRUSR|S_IWUSR | S_IRGRP | S_IWGRP,&mq_att_serv);// ouverture de la file en mode lecture
    if(file_server ==(mqd_t) -1){                                                       ///avec les droits d'exriture et  et lecture de du fichier  file message 
        fprintf(stderr,"mq_open %s \n",strerror(errno));                                ///pour les user et les memebres de son groupe
        exit(EXIT_FAILURE);
    }

char buff[256];                         //le buffer doit etre > mgssize de mq_att 
     size_t msg_length  = sizeof(buff)+1;
     while(1)
     {
         if((errnum = mq_receive(file_server,(char*)buff,msg_length,NULL))<0){
             fprintf(stderr,"mq_receive : %s \n",strerror(errno));
             exit(EXIT_FAILURE);
         }
         printf("%s",buff);
         printf(" adresse %u \n ",buff[0]);
     }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。