发送端
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <QMessageBox>
#define SYS_MSG_KEY_VALUE 1002 // 消息队列键值
struct msgstru{
long mtype; //大于0
char mtext[512];
};
struct msgstru msg;
int qid = -1;
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
msg.mtype = 1;
char *c="aaaa";
memcpy(msg.mtext,c,strlen(c));
ssize_t ret_value = msgsnd(qid,&msg,sizeof(struct msgstru),IPC_NOWAIT);
if(ret_value < 0)
QMessageBox::warning(NULL,"aaaa","aaaa",QMessageBox::Yes);
}
void Widget::on_pushButton_2_clicked()
{
msgctl(qid,IPC_RMID,0);
}
void Widget::on_pushButton_3_clicked()
{
qid = msgget(SYS_MSG_KEY_VALUE,IPC_CREAT|0666);
if(qid <0 || qid ==65536)
QMessageBox::warning(NULL,"aaaa","aaaa",QMessageBox::Yes);
}
接受端
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#define SYS_MSG_KEY_VALUE 1002 // 消息队列键值
struct msgstru{
long mtype; //大于0
char mtext[512];
};
struct msgstru msg;
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
int qid = msgget(SYS_MSG_KEY_VALUE,IPC_EXCL);
if(qid < 0 || qid == 65536)
return;
while(1)
{
sleep(2);
memset(msg.mtext,0,512);
ssize_t size = msgrcv(qid,&msg,sizeof(struct msgstru),0,0);
if(size > 0)
{
printf("%s\n",msg.mtext);
fflush(stdout);
}
}
}