|
本帖最后由 福大牛二爷 于 2013-1-4 15:37 编辑
实现两个进程的同步,利用消息队列我想发送一个消息二者的程序解析信息来判断是否继续执行···,一下是我偶的代码,求高人看看吧,问题出在哪里,我想实现的是 间隔打印出0000 1111 0000 1111 0000 1111 .........
- #include <sys/types.h>
- #include <sys/msg.h>
- #include <unistd.h>
- #define key 0x000000FF
- struct msg_buf
- {
- int mtype;
- char data[255];
- };
- int main()
- {
- int msgid;
- int ret;
- struct msg_buf msgbuf;
- printf("key =[%x]\n",key);
- msgid=msgget(key,IPC_CREAT|0666);
- if(msgid==-1)
- {
- printf("create error\n");
- return -1;
- }
- msgbuf.mtype = 1;
- while(1){
- while(1){
- memset(&msgbuf,0,sizeof(msgbuf));
- ret=msgrcv(msgid,&msgbuf,sizeof(msgbuf.data),1,IPC_NOWAIT);
- if(msgbuf.data[0]== '0'){
- printf("recv msg =[%s]\n",msgbuf.data);
- break;
- }
- sleep(1);
- }
- strcpy(msgbuf.data,"11111111");
- ret=msgsnd(msgid,&msgbuf,sizeof(msgbuf.data),IPC_NOWAIT);
- if(ret==-1)
- {
- printf("send message err\n");
- return -1;
- }
- }
- }
复制代码
这是第二个程序
- #include <sys/types.h>
- #include <sys/msg.h>
- #include <unistd.h>
- #define key 0x000000FF
- struct msg_buf
- {
- int mtype;
- char data[255];
- };
- int main()
- {
- int msgid;
- int ret;
- struct msg_buf msgbuf;
- printf("key =[%x]\n",key);
- msgid=msgget(key,IPC_CREAT|0666);
- if(msgid==-1)
- {
- printf("create error\n");
- return -1;
- }
- msgbuf.mtype = 1;
- while(1){
- strcpy(msgbuf.data,"0000");
- ret=msgsnd(msgid,&msgbuf,sizeof(msgbuf.data),IPC_NOWAIT);
- if(ret==-1)
- {
- printf("send message err\n");
- return -1;
- }
- while(1){
- memset(&msgbuf,0,sizeof(msgbuf));
- ret=msgrcv(msgid,&msgbuf,sizeof(msgbuf.data),1,IPC_NOWAIT);
- if(msgbuf.data[0] == '1')
- {
- printf("recv msg =[%s]\n",msgbuf.data);
- break;
- }
- else
- {
- strcpy(msgbuf.data,"0000");
- ret=msgsnd(msgid,&msgbuf,sizeof(msgbuf.data),IPC_NOWAIT);
- }
- sleep(1);
- }
- }
- }
复制代码
|
|