上傳文件的網(wǎng)站sem工具是什么
一、鋪墊
1.我們采用共享內(nèi)存來進(jìn)行客戶端的唯一化;
2.我剛看到的時(shí)候,就感覺,這是人想出來的嗎?太絕了
二、實(shí)例
int main(int argc, char *argv[])
{QApplication a(argc, argv);QSharedMemory shareMemory("Widget");//當(dāng)程序第一次運(yùn)行時(shí),由于共享內(nèi)存的空間還沒有被創(chuàng)建,此處的attach一定會(huì)失敗//當(dāng)程序第二次運(yùn)行時(shí),由于共享內(nèi)存的空間已經(jīng)被前一次的運(yùn)行申請(qǐng)好,此時(shí)第二個(gè)實(shí)例再去關(guān)聯(lián)就能成功//由于只能運(yùn)行一個(gè)實(shí)例,讓第二個(gè)實(shí)例直接退出就行if(shareMemory.attach()){shareMemory.decath();QMessageBox ::information(nullptr,"MiniMusic提示","程序已經(jīng)在運(yùn)行……");return 0;}shareMemory.create(1);//在物理空間申請(qǐng)1個(gè)字節(jié);Widget w;w.show();return a.exec();
}
正常情況下應(yīng)該先創(chuàng)建共享內(nèi)存空間,再進(jìn)行連接;我第一次運(yùn)行程序先連接,連接不成功,創(chuàng)建共享內(nèi)存;后進(jìn)行以下程序代碼;
第二次運(yùn)行程序時(shí)會(huì)根據(jù)給的Key值{QSharedMemory shareMemory("Widget");Widget就是Key值},連接共享空間,若連接上;就證明啟動(dòng)了第二個(gè)程序 ,立刻結(jié)束程序;
QSharedMemory類,此類會(huì)在不同的運(yùn)行環(huán)境下,有不同的表現(xiàn);只說Windows環(huán)境下,只有此變量被銷毀,或自動(dòng)結(jié)束連接,才會(huì)結(jié)束連接;所以在if語句中,不結(jié)束連接也是可以的;但是,我更希望寫全;