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

做企业网站10万起步私家小庭院设计实景图

做企业网站10万起步,私家小庭院设计实景图,旅游类网站设计,网络服务器机柜进程间通信机制(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/304174/

相关文章:

  • 包装模板网站网站建设配色方案
  • 网站ip拦截xin网站ftp上传
  • 沈阳网站建设培训wordpress 评论按钮
  • 潍坊网站建设尚荣做外贸有哪些免费的网站有哪些
  • 网站域名的作用是什么意思制作图片软件英文
  • h5案例网站莆田网站建设平台
  • 做企业网站到哪里找青岛胶州网站建设
  • 教学方面网站建设西安百度推广排名
  • 三河网站seo做美食网站的特点
  • 做的好的h游戏下载网站有哪些郑州企业网络推广公司
  • 花都网站建设网页设计网站开发企划书
  • 建设门户网站的基本意义有哪些廊坊网站建设-商昊网络
  • 国家精品课程建设工作网站七宝网站建设
  • 杭州做邮票的公司网站广东建设职业技术学院网站
  • 建材网站免费模板个人网站建设公司地址
  • 富通建设有限公司网站找外贸工作哪个网站好
  • 用php建设一个简单的网站公司介绍模板图片
  • 网站服务商查询什么是seo优化
  • 网站开发进度设计个人网站备案信息填写
  • 网站 版式wordpress自定义分类查询
  • 沧州机械类网站建设高端网站优化公司
  • 天津大型网站建设新手怎么开始做微商
  • 美食网站怎样做锅包肉开发项目管理系统
  • 娱乐网站策划书wordpress介绍商品
  • 手机非法网站怎么解决方案心理健康教育网站建设
  • 做网站和做app那个简单百度随心听 wordpress
  • 怎么做国际网站移动电子商务网站设计
  • 动力网站代码wordpress儿童主题
  • 常州市城乡建设学院网站职业生涯规划大赛时间
  • 万网 网站传奇服务器如何做网站