网站备案信息批量查询,购买虚拟机建网站,wordpress文章阅读权限,带分销的小程序1思维导图 1 使用消息队列完成两个进程间相互通信
#includemyhead.h
//定义一个消息类型
struct msgbuf
{long mtype; //消息类型char mtext[1024]; //消息正文
};
//定义一个宏#xff0c;表示消息正文大小
#define MSGSIZE sizeof(struct msgbuf…1思维导图 1 使用消息队列完成两个进程间相互通信
#includemyhead.h
//定义一个消息类型
struct msgbuf
{long mtype; //消息类型char mtext[1024]; //消息正文
};
//定义一个宏表示消息正文大小
#define MSGSIZE sizeof(struct msgbuf)-sizeof(long)
int main(int argc, const char *argv[])
{//创建子进程pid_t pidfork();//在父进程实现读功能if(pid0){//1、创建key值key_t key 0;if((keyftok(/, k)) -1){perror(ftok error);return -1;}//2、根据key值创建一个消息队列int msqid -1;if((msqid msgget(key, IPC_CREAT|0664)) -1){perror(msgget error);return -1;}//定义一个消息struct msgbuf rbuf;while(1){//清空容器bzero(rbuf.mtext, sizeof(rbuf.mtext));//只接受类型1msgrcv(msqid, rbuf, MSGSIZE, 1, 0);printf(收到消息为%s\n, rbuf.mtext);if(strcmp(rbuf.mtext, quit)0){break;}}//删除消息队列if(msgctl(msqid, IPC_RMID, NULL) !0){perror(msgctl error);return -1;}}//在子进程实现写功能if(pid0){//1、创建key值key_t key 0;if((keyftok(/, k)) -1){perror(ftok error);return -1;}//2、根据key值创建一个消息队列int msqid -1;if((msqid msgget(key, IPC_CREAT|0664)) -1){perror(msgget error);return -1;}//定义一个消息struct msgbuf sbuf;while(1){//清空正文的容器bzero(sbuf.mtext, sizeof(sbuf.mtext));sbuf.mtype2;printf(请输入消息正文);fgets(sbuf.mtext, sizeof(sbuf.mtext), stdin);sbuf.mtext[strlen(sbuf.mtext)-1] 0;//将消息存放入队列中msgsnd(msqid, sbuf, MSGSIZE, 0);printf(发送成功\n);if(strcmp(sbuf.mtext, quit)0){break;}}
}return 0;
}#includemyhead.h
//定义一个消息类型
struct msgbuf
{long mtype; //消息类型char mtext[1024]; //消息正文
};
//定义一个宏表示消息正文大小
#define MSGSIZE sizeof(struct msgbuf)-sizeof(long)
int main(int argc, const char *argv[])
{//创建子进程pid_t pidfork();//在父进程实现读功能if(pid0){//1、创建key值key_t key 0;if((keyftok(/, k)) -1){perror(ftok error);return -1;}//2、根据key值创建一个消息队列int msqid -1;if((msqid msgget(key, IPC_CREAT|0664)) -1){perror(msgget error);return -1;}//定义一个消息struct msgbuf rbuf;while(1){//清空容器bzero(rbuf.mtext, sizeof(rbuf.mtext));//只接受类型2msgrcv(msqid, rbuf, MSGSIZE, 2, 0);printf(收到消息为%s\n, rbuf.mtext);if(strcmp(rbuf.mtext, quit)0){break;}}//删除消息队列if(msgctl(msqid, IPC_RMID, NULL) !0){perror(msgctl error);return -1;}}//在子进程实现写功能if(pid0){//1、创建key值key_t key 0;if((keyftok(/, k)) -1){perror(ftok error);return -1;}//2、根据key值创建一个消息队列int msqid -1;if((msqid msgget(key, IPC_CREAT|0664)) -1){perror(msgget error);return -1;}//定义一个消息struct msgbuf sbuf;while(1){//清空正文的容器bzero(sbuf.mtext, sizeof(sbuf.mtext));sbuf.mtype1;printf(请输入消息正文);fgets(sbuf.mtext, sizeof(sbuf.mtext), stdin);sbuf.mtext[strlen(sbuf.mtext)-1] 0;//将消息存放入队列中msgsnd(msqid, sbuf, MSGSIZE, 0);printf(发送成功\n);if(strcmp(sbuf.mtext, quit)0){break;}}
}return 0;
}