我在写一个共享内存,把数据写进去,再读出来,可是没有成功。不知道怎么样设置KEY,代码在下面,请帮忙看一下。谢谢。。
#include "widget.h"
#include "ui_widget.h"
#include <QBuffer>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
sharedmem("mysharedmemorykey")
{
... //这里应用写什么?
}
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_write_clicked()
{
if(sharedmem.isAttached())
{
sharedmem.detach();
}
QString text;
text="123456";
QBuffer buffer1;
buffer1.open( QBuffer::ReadWrite );
QDataStream out( &buffer1 );
out << text;
int size = buffer1.size();
if (!sharedmem.create( size ) )
{
ui->loadtext->append(tr("Unable to create shared memory segment."));
return;
}
sharedmem.lock();
char *to = (char*)sharedmem.data();
const char *from = buffer1.data();
memcpy( to, from, qMin( sharedmem.size(), size ) );
sharedmem.unlock();
}
void Widget::on_read_clicked()
{
if (!sharedmem.attach())
{
//If an attempt of reading from the shared memory before data is written
ui->showtext->append(tr("Enter a text first"));
return;
}
QBuffer buffer2;
QDataStream in(&buffer2);
QString text2;
sharedmem.lock();
buffer2.setData((char*)sharedmem.constData(), sharedmem.size());
buffer2.open(QBuffer::ReadOnly);
in >> text2;
ui->showtext->append(text2);
sharedmem.unlock();
// As this is the last process attached to the shared memory segment
// the shared memory segment is released, destroying its contents
sharedmem.detach();
}