在main函数中加入如下代码:
QSystemSemaphore sema("CLGObject", 1, QSystemSemaphore::Open);
sema.acquire();// 在临界区操作共享内存
QSharedMemory mem("CLGSystemObjcet");// 全局对象名
if (!mem.create(1))// 如果全局对象已存在则退出
{
sema.release();// 如果是 Unix 系统,会自动释放。
return 0;
}
QApplication application(argc, argv);
ClgWin win;
win.show();
sema.release();// 释放临界区
return application.exec(); 使用共享内存和全局信号量机制来实现。
本文介绍了一种利用共享内存和全局信号量机制实现进程间通信的方法。通过QSystemSemaphore和QSharedMemory类,在程序启动时获取或创建共享内存区域,并使用信号量控制对共享内存的访问。
949

被折叠的 条评论
为什么被折叠?



