0

私は、基本的な実行中のサーバークライアントを意味する問題に取り組んでいます(以前に行われた)。問題は、クライアントを実行するよりもサーバーを実行していることです。msg Que が作成され、両方のクライアントが入力として char を取得し、確認の出力を受け取りますが、サーバーの msgrcv が応答しません。

sc

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/msg.h>
#include <sys/ipc.h>
#include <errno.h>

#include "struc.h"


int main(){
    int qt;
    struct msg m;

    qt = msgget(1271,IPC_CREAT|IPC_EXCL|0600);
    if(qt < 0){ perror("Error MSGGET()\n");}
    printf("msg queue created!\n");

    if(msgrcv(qt,&m,sizeof(struct msg),0,0)<0){
        perror("Msg recive error");
    }   
    printf("msg recived!\n");


    msgctl(qt,IPC_RMID,NULL);
    return 0;
}

cc

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/msg.h>
#include <sys/ipc.h>
#include <errno.h>

#include "struc.h"

int main(){
    int qt;
    struct msg m;
    qt = msgget(1271,0);
    if(qt < 0){ perror("~~~ Error MSGGET()\n");}
    printf("msg created!\n");

    printf("Enter one char: !\n");
    scanf("%c",&m.c);

    msgsnd(qt, &m,sizeof(struct msg),0);
    printf("msg sent!\n");
return 0;
}

構造体

struct msg{
    long mtype;
//  matrix M;
    char c;
};

(3つのファイルを作成することで、自分でテストできます。何かを見逃した可能性があります。どんなアイデアでも大歓迎です)

4

1 に答える 1