親プロセスにメッセージを渡すためにこのプログラムを作成しました。親プロセスが受信したメッセージを出力するようにします。私はcでのプログラミングにまったく慣れていないので、これがchar配列の読み取りまたはメッセージパッシングの問題であるかどうかはわかりません。これが私の試みです:
struct msg {
long int mtype; /* message type */
char mtext[1028]; /* message text */
} msg;
int pid, len;
int msgflg = 0;
int msqid;
char *mymsg[1028];
size_t msgsz;
long int msgtyp;
switch(pid=fork()) //fork child process
{//Child process
case 0:
mymsg[1] = "serving for sender\n";
len = strlen(mymsg[1]);
msgsnd(msqid,mymsg[1],len,msgflg);
break;
case -1:
printf("fork failed");
exit(-1);
break;
default:
msg.mtype = 0;
msqid = msgget(IPC_PRIVATE,msgflg);
wait((int *) 0);
msgrcv(msqid,&msg,msgsz,msgtyp,IPC_NOWAIT);
printf("%s",msg.mtext);
msgctl(msqid, IPC_RMID, NULL);
exit(0);
}
私の質問は、このコードをコンパイルして実行すると、送信用のメッセージが表示されないのはなぜですか?