我在分配子进程后遇到了消息问题。 基本上父亲需要创建一个消息队列和一个子进程,然后暂停,直到孩子发送消息并终止。之后,父亲阅读了这条消息。 IT在执行时给出了读写错误。 谢谢你的帮助。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <unistd.h>
#include <errno.h>
typedef struct Mymsg {
long mtype;/* Message type */
char mtext[20]; /* Message body */
}Mymsg;
int main() {
int mask, id;
key_t key;
mask = 0666;
Mymsg message;
Mymsg in;
key = ftok("/tmp", 'x');
if((id = msgget(key, IPC_CREAT)) == -1) {
printf("msgget error");
exit(EXIT_FAILURE);
}
switch(fork()) {
case 0:
printf("CHILD PROCESS\n");
message.mtype=1;
strcpy(message.mtext,"test");
if(msgsnd(id,&message,sizeof(message.mtext),0)==-1)
printf("ERROR SEND\n");
_exit(EXIT_SUCCESS);
default:
wait(NULL);
printf("FATHER PROCESS\n");
if(msgrcv(id, &in, (sizeof(in)- sizeof(long)), 1,0)== -1)
printf("ERROR RCV \n");
printf("READ: %s\n", in.mtext);
msgctl(id, IPC_RMID,0);
}
exit(EXIT_SUCCESS);
}