用线程和消息队列实现连个进程间的通讯
来源:互联网 发布:现场网络直播 编辑:程序博客网 时间:2024/06/04 19:06
gcc 编译的时候要加上-pthread
进程1:
#include <stdio.h>
#include <sys/types.h>#include <sys/ipc.h>
#include <sys/msg.h>
#include <strings.h>
#include <unistd.h>
struct msgbuf
{
long msgtype; /* message type, must be > 0 */
char mtext[100]; /* message data */
};
void *route(void *arg)
{
key_t key1;
key1 = ftok(".",2);
int msgid1;
msgid1 = msgget(key1, IPC_CREAT|0666 );
struct msgbuf buf1;
while(1)
{
bzero(&buf1,sizeof(buf1));
msgrcv(msgid1,&buf1,100,2,0);
printf("%s\n",buf1.mtext);
}
}
int main (int argc, const char *argv[])
{
key_t key;
key = ftok(".",1);
pthread_t tid;
pthread_create(&tid,NULL,route,NULL);
int msgid;
msgid = msgget(key, IPC_CREAT|0666 );
struct msgbuf buf;
while(1)
{
bzero(&buf,sizeof(buf));
fgets(buf.mtext,100,stdin);
buf.msgtype = 1;
msgsnd(msgid,&buf,100,0);
}
return 0;
}
进程2:
#include<stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <strings.h>
struct msgbuf
{
long msgtype; /* message type, must be > 0 */
char mtext[100]; /* message data */
};
void *route1(void *arg)
{
key_t key1;
key1 = ftok(".",2);
int msgid1;
msgid1 = msgget(key1, IPC_CREAT|0666 );
struct msgbuf buf1;
while(1)
{
bzero(&buf1,sizeof(buf1));
fgets(buf1.mtext,100,stdin);
buf1.msgtype = 2;
msgsnd(msgid1,&buf1,100,0);
}
}
int main (int argc, const char *argv[])
{
key_t key;
key = ftok(".",1);
pthread_t tid;
int msgid;
pthread_create(&tid,NULL,route1,NULL);
msgid = msgget(key, IPC_CREAT|0666 );
struct msgbuf buf;
while(1)
{
bzero(&buf,sizeof(buf));
msgrcv(msgid,&buf,100,1,0);
printf("%s\n",buf.mtext);
}
return 0;
}
- 用线程和消息队列实现连个进程间的通讯
- 通过消息队列实现线程间通讯
- 进程间通讯的消息队列和共享内存方式的实现
- 进程间通讯--消息队列
- 进程间通讯-消息队列
- 进程间通讯:消息队列
- UnitySocket通讯,实现连个设备进行消息通讯
- 基于systemV的消息队列的多进程间CS通讯实现
- 利用主线程与子线程间的消息通讯,实现任务处理队列
- 进程间的通讯方式_消息队列
- 线程,进程间的通讯和同步原理,实现用例和应用
- 进程间通讯--消息队列
- Linux进程间通讯之消息队列
- 进程间通讯--消息队列
- 进程间通讯--消息队列
- Linux进程间通讯之消息队列
- Linux进程间通讯之消息队列
- 进程间通讯之消息队列
- android中singleTask的home键的问题
- .net框架
- POJ 1144 Network 求桥的模板题
- jquery ztree 的使用(从数据库中取数据)
- 错误码
- 用线程和消息队列实现连个进程间的通讯
- 开源图表库hellocharts之最详细的使用介绍
- 反编译
- 机器学习基础
- BZOJ2209 [Jsoi2011]括号序列
- 面向对象与形而上学
- 使用Spring MVC的@ControllerAdvice注解做Json的异常处理
- android学习总结(16.08.23)LinearLayout(线性布局)中控件的摆放位置——orientation,gravity,layout_gravity的关系
- onTouch,onClick冲突详解