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

深圳外贸电商网站建设免费发布信息平台网

深圳外贸电商网站建设,免费发布信息平台网,方案巴巴策划网站,基于c 的网站开发进程间通信机制(IPC) 简述 IPC:Inter Process Communication 进程和进程之间的用户空间相互独立,但是4G内核空间共享,进程间的通信就是通过这4G的内核空间 分类 传统的进程间通信机制 无名管道(pipe) 有名管道&…

进程间通信机制(IPC)

简述

IPC:Inter Process Communication

进程和进程之间的用户空间相互独立,但是4G内核空间共享,进程间的通信就是通过这4G的内核空间

分类

传统的进程间通信机制

无名管道(pipe)

有名管道(fifo)

信号(signal)

System V中的IPC对象和IPC的区别

消息队列(message queue)

共享内存(shared memory)

信号灯集(semaphore)

可用于主机传输的通信机制

套接字(socket)

消息队列

概念

在内核内存中创建一个队列,进程需要将数据打包成结点,添加到队尾中,或者从队列中读取结点,可以通过消息类型进行消息分类

特点

需要打包,有特定的格式以及消息类型

按照先进先出原则,但是也可以限制消息类型读取

独立于进程,灯进程结束后,消息队列以及其中的内容不会删除,除非中期操作系统或者手动删除

在Linux系统下,可以通过命令ipcs查看消息队列,通过ipcrm -q msqid删除消息队列

函数

ftok()函数,获得一个Key值用来创建消息队列,通过相同的key值可以访问对应的消息队列

msgget()函数创建一个消息队列获得起id号

msgsnd()发送消息到指定消息队列

msgrcv()获取对应消息队列中对应的消息

msgctl()控制消息队列,常用于删除消息队列

#include<myhead.h>
#include<sys/msg.h>
#include<sys/ipc.h>
struct msgbuf
{long mtype;      //消息类型char mtext[128]; //消息内容
};//线程1函数
void *task1(void *arg)
{int msqid = *(int *)arg;//获取消息队列id号struct msgbuf msbuf;//声明消息结构体printf("A:\n\t");fflush(stdout);while (1){msbuf.mtype = 1;//消息类型fgets(msbuf.mtext,sizeof(msbuf.mtext),stdin);msbuf.mtext[strlen(msbuf.mtext)-1]='\0';if(msgsnd(msqid,&msbuf,sizeof(msbuf)-sizeof(long),0) == -1){perror("msgsnd");return NULL;}//printf("线程%d:发送成功\n",getpid());printf("A:\n\t");fflush(stdout);if (!strcmp(msbuf.mtext,"quit")){system("clear");exit(0);}}pthread_exit(NULL);
}//线程2函数
void *task2(void *arg)
{int msqid = *(int *)arg;struct msgbuf buf;ssize_t num = 0;while (1){bzero(&buf,sizeof(buf));if ((num = msgrcv(msqid,&buf,sizeof(buf.mtext),2,0))<0){//perror("msgrcv");return NULL;}printf("\nB:\n\t%s\n",buf.mtext);printf("A:\n\t");fflush(stdout);if (!strcmp(buf.mtext,"quit")){msgctl(msqid,IPC_RMID,NULL);system("clear");exit(0);}}pthread_exit(NULL);
}
int main(int argc, const char *argv[])
{key_t key = ftok("./",0);if (key == -1){perror("ftok");return -1;/* code */}umask(0);int msqid = msgget(key,IPC_CREAT|0664);if (msqid == -1){perror("msgget");return -1;}pthread_t tid1,tid2;if (pthread_create(&tid1,NULL,task1,&msqid) != 0){printf("线程1创建失败\n");}if (pthread_create(&tid2,NULL,task2,&msqid) != 0){printf("线程1创建失败\n");}pthread_join(tid1,NULL);pthread_join(tid2,NULL);return 0;
}
#include<myhead.h>
//#include<sys/msg.h>
//#include<sys/ipc.h>
struct msgbuf
{long mtype;      //消息类型char mtext[128]; //消息内容
};//线程1函数
void *task1(void *arg)
{int msqid = *(int *)arg;struct msgbuf msbuf;printf("B:\n\t");fflush(stdout);while (1){msbuf.mtype = 2;fgets(msbuf.mtext,sizeof(msbuf.mtext),stdin);msbuf.mtext[strlen(msbuf.mtext)-1]='\0';if(msgsnd(msqid,&msbuf,sizeof(msbuf)-sizeof(long),0) == -1){perror("msgsnd");return NULL;}//printf("线程%d:发送成功\n",getpid());printf("B:\n\t");fflush(stdout);if (!strcmp(msbuf.mtext,"quit")){system("clear");exit(0);}}pthread_exit(NULL);
}//线程2函数
void *task2(void *arg)
{int msqid = *(int *)arg;struct msgbuf buf;ssize_t num = 0;while (1){bzero(&buf,sizeof(buf));if ((num = msgrcv(msqid,&buf,sizeof(buf.mtext),1,0))<0){//perror("msgrcv");return NULL;}printf("\nA:\n\t%s\n",buf.mtext);printf("B:\n\t");fflush(stdout);if (!strcmp(buf.mtext,"quit")){msgctl(msqid,IPC_RMID,NULL);system("clear");exit(0);}}pthread_exit(NULL);
}
int main(int argc, const char *argv[])
{key_t key = ftok("./",0);if (key == -1){perror("ftok");return -1;/* code */}umask(0);int msqid = msgget(key,IPC_CREAT|0664);if (msqid == -1){perror("msgget");return -1;}pthread_t tid1,tid2;if (pthread_create(&tid1,NULL,task1,&msqid) != 0){printf("线程1创建失败\n");}if (pthread_create(&tid2,NULL,task2,&msqid) != 0){printf("线程1创建失败\n");}pthread_join(tid1,NULL);pthread_join(tid2,NULL);return 0;
}

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

相关文章:

  • 网页怎么做成网站简单网页制作图片
  • 163手机移动网站H5网站开发工程师
  • 巅峰网站建设网上商城建设 网站定制开发
  • 永久免费手机网站自助建站注册深圳公司的费用
  • 网站一直显示建设中山西谷歌seo
  • 西安建设网站的公司简介asp技术网站开发案例
  • 常州市金坛建设局网站适合小企业的erp软件
  • 可以做直播卖产品的网站什么都能搜到的浏览器
  • 网站集约化建设困难常见的cms网站程序有哪些
  • 贸易网站有哪些wordpress 鲜果
  • 竞价网站同时做优化可以吗查排名
  • 彩票黑网站是怎么做的网站的关键词排名
  • 珠海建站模板互联网公司是什么
  • 网站标题一样北京网址
  • 美食网站建设的栏目和模板网址类网站怎么做
  • 做亚马逊有看数据的网站吗女生做网站开发
  • 成都最新新闻事件今天seo黑帽是什么意思
  • 随州有哪些网站建设的公司江苏城乡建设厅官方网站
  • 建设网站证书查询国内用什么做网站
  • 网站建设客户沟通模块山西seo网站设计
  • 公司网站建设推广方案衡阳网站建设报价方案
  • 高端网站建设公司好不好自己做视频用什么软件
  • 强军网网站建设wordpress批量提交表单
  • 建设企业网站企业网上银行官网官方新开传奇网站发布网孞
  • 如何建网站要什么条件做面食网站
  • 中国网站建设银行-个人客户网站建设费用明细报价
  • 如何将网站上传到空间手机建站网站
  • 外贸俄罗斯俄语网站制作物流网站购买物流单号
  • 宁波网站建设详细策划品牌建设部门的规章制度
  • 深圳建网站哪家公司好视频直播网站建设方案