当前位置: 首页 > news >正文

昔阳做网站公司基因网站开发

昔阳做网站公司,基因网站开发,网站风格对比,网站建设网页制作目录 1、使用消息队列完成两个进程之间相互通信 2、共享内存实现两个进程之间的通信 3、思维导图 1、使用消息队列完成两个进程之间相互通信 //msgsnd.c #include <myhead.h>// 要发送的消息类型 struct msgbuf {long mtype;char mtext[1024]; };// 定义一个宏&#…

目录

1、使用消息队列完成两个进程之间相互通信

2、共享内存实现两个进程之间的通信

3、思维导图


1、使用消息队列完成两个进程之间相互通信

//msgsnd.c
#include <myhead.h>// 要发送的消息类型
struct msgbuf
{long mtype;char mtext[1024];
};// 定义一个宏,为后面需要传入数据的大小
#define SIZE sizeof(struct msgbuf) - sizeof(long)int main(int argc, char const *argv[])
{// 1.创建出一个key值,用于产生消息队列key_t key = ftok("/", 'k');if (key == -1){perror("ftok error");return -1;}// 2.通过生成的key创建出一个消息队列对象int msqid = msgget(key, IPC_CREAT | 0664);if (msqid == -1){perror("msqid error");return -1;}// 向消息队列中存放消息struct msgbuf buf;// 创建父子进程int pid = fork();if (pid < 0){perror("fork error");return -1;}else if (pid == 0){// 子进程,用于读取消息队列中类型为2的数据while (1){// 读取消息队列中类型为1的数据msgrcv(msqid, &buf, SIZE, 2, 0);if (strcmp(buf.mtext, "quit") == 0){break;}// 直接输出到终端,读到了什么内容printf("\n接收到的数据为:%s\n", buf.mtext);}}// 父进程// 向消息队列中存放类型为1数据while (1){// 发送消息为1的数据buf.mtype = 1;printf("请输入消息内容>>>");fgets(buf.mtext, SIZE, stdin);buf.mtext[strlen(buf.mtext) - 1] = 0; // 将回车变成'\0'// 将数据以阻塞的形式发送到消息队列中msgsnd(msqid, &buf, SIZE, 0);printf("发送成功\n");}wait(NULL);return 0;
}
//msgrecv.c
#include <myhead.h>// 要接收的消息类型
struct msgbuf
{long mtype;char mtext[1024];
};// 定义一个宏,为后面需要传入数据的大小
#define SIZE sizeof(struct msgbuf) - sizeof(long)int main(int argc, char const *argv[])
{// 1.创建出一个key值,用于打开消息队列key_t key = ftok("/", 'k');if (key == -1){perror("ftok error");return -1;}// 2.打开消息队列对象int msqid = msgget(key, IPC_CREAT | 0664);if (msqid == -1){perror("msqid error");return -1;}// 向消息队列中存放消息struct msgbuf buf;// 创建父子进程int pid = fork();if (pid < 0){perror("fork error");return -1;}else if (pid == 0){// 子进程,用于读取消息队列中类型为1的数据while (1){// 读取消息队列中类型为1的数据msgrcv(msqid, &buf, SIZE, 1, 0);if (strcmp(buf.mtext, "quit") == 0){break;}// 直接输出到终端,读到了什么内容printf("\n接收到的数据为:%s\n", buf.mtext);}// 删除消息队列if (msgctl(msqid, IPC_RMID, NULL) == -1){perror("msgctl error");return -1;}exit(EXIT_SUCCESS);}// 父进程// 向消息队列中存放类型为2数据while (1){// 向消息队列中存放类型为2的数据buf.mtype = 2;printf("请输入消息内容>>>");fgets(buf.mtext, SIZE, stdin);buf.mtext[strlen(buf.mtext) - 1] = 0; // 将回车变成'\0'// 将数据以阻塞的形式发送到消息队列中msgsnd(msqid, &buf, SIZE, 0);printf("发送成功\n");}wait(NULL);return 0;
}

 输出结果如下:实现两个进程之间的通信

2、共享内存实现两个进程之间的通信

//shmsnd.c
#include<myhead.h>
#include<sys/user.h>
int main(int argc, char const *argv[])
{//创建key值用于创建共享内存段key_t key = ftok("/",'t');if(key == -1){perror("ftok error");return -1;}printf("key = %d\n",key);//2、创建一个共享内存的对象int shmid = shmget(key,PAGE_SIZE,IPC_CREAT|0664);if(shmid == -1){perror("shmget error");return -1;}printf("shmid = %d\n",shmid);//3、将共享内存段映射到程序中来char *addr = (char *)shmat(shmid,NULL,0);//参数1:共享内存id号//参数2:系统自动映射对齐页//参数3:对共享内存的操作权限为读写权限printf("addr = %p\n",addr); //输出映射的地址//读出共享内存中的数据printf("消息为:%s",addr);sleep(5);if(shmdt(addr) == -1){perror("shmdt error");return -1;}//删除共享内存if(shmctl(shmid, IPC_RMID, NULL) == -1){perror("shmctl error");return -1;}while(1);return 0;
}
//shmrecv.c
#include<myhead.h>
#include<sys/user.h>
int main(int argc, char const *argv[])
{//创建key值用于创建共享内存段key_t key = ftok("/",'t');if(key == -1){perror("ftok error");return -1;}printf("key = %d\n",key);//2、创建一个共享内存的对象int shmid = shmget(key,PAGE_SIZE,IPC_CREAT|0664);if(shmid == -1){perror("shmget error");return -1;}printf("shmid = %d\n",shmid);//3、将共享内存段映射到程序中来char *addr = (char *)shmat(shmid,NULL,0);//参数1:共享内存id号//参数2:系统自动映射对齐页//参数3:对共享内存的操作权限为读写权限printf("addr = %p\n",addr); //输出映射的地址//向共享内存中写入数据strcpy(addr,"hello a hua qing yuan jian\n");sleep(5);//取消映射关系if(shmdt(addr) == -1){perror("shmdt error");return -1;}while(1);return 0;
}

输出结果如下:

3、思维导图

http://www.yayakq.cn/news/657111/

相关文章:

  • 淄博网站备案酒店网站建设描述
  • c语言做项目网站广告公司排名
  • 一般做公司网站需要哪几点从那些方面建设网站
  • 秒收网站手机代码编辑器
  • 新乡网站建设哪家正规crm客户管理系统页面
  • 个人博客设计安卓手机优化大师官方下载
  • 铜陵建设行业培训学校网站学做婴儿衣服网站好
  • 拿自己爱人做网站有哪些好的做兼职的网站
  • 建设旅游网站的工作方案做服装网站的意义是什么
  • 网站建设考题中国建筑网官网查询证书
  • 网站线上推广方式网站建设开发制作
  • 网站建设与用户需求分析(初稿电子商务网站建设林锋课本答案
  • 网页设计与网站建设心得体会建筑公司有哪些部门和职位
  • 商城网站建设是什么意思合肥制作手机网站
  • 北京做机床的公司网站外贸数据分析网站
  • 手机分销网站app个人主页设计
  • 个人做网站开发国内有实力的软件开发公司
  • win2003怎么做网站新东方教育培训机构
  • 网站设计与制作说明书页面跳转请记住新域名
  • 做宣传图片的网站搜索引擎优化的主要特征
  • 麦田 网站建设响应式公司官网建设
  • 网站建设一对一培训建设英文网站
  • 青岛专业网站推广设计公司公司注册地址和经营地址不一致可以吗
  • 网站如何做好用户体验快懂百科登录入口
  • 花钱做的网站推广被骗网站建设维护和服务合同
  • 海南省建设网站的公司电话手机商城网站案例
  • 台州网站建设推广西安企业建站在哪里做
  • 台州有哪些做网站的公司抖音小程序定制
  • 俄罗斯网站推广网站游戏案例
  • 自己可以学着做网站吗微信商城模板