QSharedMemory共享内存实现进程间通讯(IPC)及禁止程序多开
生活随笔
收集整理的這篇文章主要介紹了
QSharedMemory共享内存实现进程间通讯(IPC)及禁止程序多开
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
版權聲明:若無來源注明,Techie亮博客文章均為原創。 轉載請以鏈接形式標明本文標題和地址:
本文標題:QSharedMemory共享內存實現進程間通訊(IPC)及禁止程序多開?????本文地址:http://techieliang.com/2017/12/685/ 文章目錄#include <QCoreApplication> #include <QSharedMemory> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); //創建的同時設置key,也可以setKey QSharedMemory sm("test_shared"); //如果是第一個使用必須先創建 //其余進程不需要創建直接attach if(!sm.create(1024)) qDebug()<<"create error"; sm.attach();//綁定內存 //attach會返回bool,可以不用下面方式判斷 if(!sm.isAttached()) qDebug()<<"attach error"; sm.lock(); int *memdata = static_cast<int*>( sm.data() ); *memdata = 1024; sm.unlock(); //如此偷懶!想要測試多進程把下面拷走建項目 QSharedMemory testsm("test_shared"); testsm.attach(); int *testdata = static_cast<int*>( testsm.data() ); qDebug()<<*testdata; //使當前進程與內存分離,析構的時候也會自動調用 sm.detach(); return a.exec(); } #include <QCoreApplication> #include <QSharedMemory> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); //創建的同時設置key,也可以setKey QSharedMemory sm("test_shared"); if(sm.attach()) return 0; sm.create(1); MainWindow w; w.show(); return a.exec(); }
本文標題:QSharedMemory共享內存實現進程間通訊(IPC)及禁止程序多開?????本文地址:http://techieliang.com/2017/12/685/ 文章目錄
- 1. 介紹
- 2. 范例
- 3. 禁止程序多開
1. 介紹
很簡單的庫,直接看幫助文檔:http://doc.qt.io/qt-5/qsharedmemory.html
主要函數:設置key,create向系統申請建立一個內存空間、attach當前進程與內存綁定、detach解除綁定,lock/unlock同步鎖,data/constdata獲取內存指針
創建者流程:setkey,create,attach,lock,data,操作data,unlock,不用的時候detach
訪問者:setkey,attach,lock,data,操作data,unlock,不用的時候detach?? 不需要create了
- 作為創建者應該確定別人也不用了再解綁
- QSharedMemory析構是也會自動detach
- 一個內存空間如果0個attach時會被銷毀,數據就沒了
- 讀寫操作記著lock,注意不要忘了unlock
- 沒有create的key,在調用attach時會返回false,注意這句在禁止程序多開有用
size獲取共享內存大小,error/errorString是錯誤信息,isAttached判斷當前進程是否已經綁定到內存。
2. 范例
偷個懶,寫到一起了:
testsm析構時會調用detach,可以吧sm.detach();放在QSharedMemory testsm(“test_shared”);? 就會看到出錯了
3. 禁止程序多開
很簡單的原理,只要有一個開啟成功那就會create一個1大小的空間,后續再開程序就能attach了然后就return了……
轉載請以鏈接形式標明本文標題和地址:Techie亮博客 ? QSharedMemory共享內存實現進程間通訊(IPC)及禁止程序多開轉載于:https://www.cnblogs.com/techiel/p/8035263.html
總結
以上是生活随笔為你收集整理的QSharedMemory共享内存实现进程间通讯(IPC)及禁止程序多开的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用友U815.0UFO报表知识点分享
- 下一篇: nike附近门店查询_不止5折!200+