qt 共享内存跨进程传递 例子
时间: 2023-09-20 14:03:30 浏览: 103
Qt程序间的共享内存通信实例
下面是一个简单的 Qt 共享内存跨进程传递的例子:
sender.cpp:
```cpp
#include <QCoreApplication>
#include <QSharedMemory>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 创建共享内存
QSharedMemory sharedMemory;
sharedMemory.setKey("testSharedMemory");
if (!sharedMemory.create(sizeof(int))) {
qDebug() << "Failed to create shared memory";
return -1;
}
// 写入数据到共享内存
int value = 123;
memcpy(sharedMemory.data(), &value, sizeof(int));
qDebug() << "Write value to shared memory:" << value;
// 发送信号
sharedMemory.attach();
sharedMemory.lock();
sharedMemory.unlock();
sharedMemory.detach();
return a.exec();
}
```
receiver.cpp:
```cpp
#include <QCoreApplication>
#include <QSharedMemory>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 获取共享内存
QSharedMemory sharedMemory;
sharedMemory.setKey("testSharedMemory");
if (!sharedMemory.attach()) {
qDebug() << "Failed to attach shared memory";
return -1;
}
// 读取共享内存中的数据
int value;
memcpy(&value, sharedMemory.data(), sizeof(int));
qDebug() << "Read value from shared memory:" << value;
// 删除共享内存
sharedMemory.detach();
sharedMemory.setKey("testSharedMemory");
sharedMemory.attach();
sharedMemory.lock();
sharedMemory.unlock();
sharedMemory.detach();
sharedMemory.remove();
return a.exec();
}
```
在 sender.cpp 中,我们创建一个大小为 sizeof(int) 的共享内存,并将数据 123 写入其中。然后发送一个信号通知 receiver.cpp 从共享内存中读取数据。
在 receiver.cpp 中,我们获取共享内存并读取其中的数据。最后删除共享内存。
阅读全文