Hi everybody
I 'm beginner in Qt, I have a problem to read a shared memory segment generated by c program on qt application using nativekey().
if someone have any idea or solution please help me
my c prog generate a data on shared memory with this key-id 0x00313233
and this is my source :
QSharedMemory shm("123");
if (shm.isAttached())
shm.detach();
if (!shm.attach(QSharedMemory::ReadWrite)) {
// Shared memory n'est pas crée donc création
if (!shm.create(1024, QSharedMemory::ReadWrite)) {
QSharedMemory::SharedMemoryError err = shm.error();
qDebug()<< err <<"Erreur lors de création de shared memory";
}
else {
qDebug()<< "memory attached successfully";
qDebug()<< "memory created successfully";
qDebug()<< "memory keyid"<<shm.key().toAscii().toHex();
if(shm.lock()){
qDebug()<<"Memory locked successefully";
qDebug() << message;
if(shm.unlock()){
qDebug()<< "Memory unlocked successefully";
if(shm.detach())
qDebug()<<"Memory detached successefully";
else qDebug()<<"Memory detached failed"<< shm.error();
}
else qDebug()<< "Memory unlock failed"<< shm.error();
}
else qDebug()<<"Memory lock failed"<< shm.error();
}
}
QSharedMemory shm("123");
if (shm.isAttached())
shm.detach();
if (!shm.attach(QSharedMemory::ReadWrite)) {
// Shared memory n'est pas crée donc création
if (!shm.create(1024, QSharedMemory::ReadWrite)) {
QSharedMemory::SharedMemoryError err = shm.error();
qDebug()<< err <<"Erreur lors de création de shared memory";
}
else {
qDebug()<< "memory attached successfully";
qDebug()<< "memory created successfully";
qDebug()<< "memory keyid"<<shm.key().toAscii().toHex();
if(shm.lock()){
qDebug()<<"Memory locked successefully";
QByteArray s = QByteArray((char*) shm.constData(), shm.size());
QString message = QString::fromUtf8(s.constData());
qDebug() << message;
if(shm.unlock()){
qDebug()<< "Memory unlocked successefully";
if(shm.detach())
qDebug()<<"Memory detached successefully";
else qDebug()<<"Memory detached failed"<< shm.error();
}
else qDebug()<< "Memory unlock failed"<< shm.error();
}
else qDebug()<<"Memory lock failed"<< shm.error();
}
}
QTextEdit *textedit= new QTextEdit(s);
QHBoxLayout *layout = new QHBoxLayout( &mainwindow );
To copy to clipboard, switch view to plain text mode
Bookmarks