使用Mutex來保證單一程序例項的一種方法

2021-09-30 05:07:27 字數 524 閱讀 7673

使用mutex來保證單一程序例項的一種方法

我們很多時候需要保證軟體只有乙個例項在執行,這裡記錄一種使用mutex來保證單一程序例項的方法。

1. 首先定義乙個全域性的mutex的名稱

#define mutex_name     _t("global// single_mutex")

注意,這裡的名稱指定了是global全域性範圍,如果沒有指定是global,那麼只是在本登入賬號域內保證單一

2. 定義函式,如果是單一程序,返回true,否則返回false

利用的原理:如果乙個指定名稱的mutex已經存在,那麼就會返回已經存在的mutex的handle,同時getlasterror返回 error_already_exists錯誤**。

所以,要實現單一程序例項,只要在程式的初始化時候,建立這樣乙個global的mutex,

如果lasterror返回error_already_exists錯誤**,說明程式已經存在了乙個正在執行的例項程序,直接退出當前程序即可,這樣就實現了單一例項程序的控制。

實現單一程序

有時候,乙個模組x會被其他模組函式呼叫,模組x會產生很多的實現程序,具有不同的pid號。也許模組x在系統執行時只需要乙個實現程序就可以實現它對系統的服務功能,而執行多個實現程序則會造成對系統資源的浪費,而且在某些情況下,如果模組x是對某個硬體的控制,同時執行多個程序則會導致對硬體資源的搶奪,對硬體的...

Qt單一例項程序

想讓自己的程式只被啟動一次,如果已經執行,則不再重複開啟。看了網上很多資料,我這裡主要記錄其中兩種 尊重原創 實現qt單例程式 qsystemsemaphore qsharedmemory 稍作改動 include mainwindow.h include include include int m...

Linux伺服器使用(一)程序

ctrl c 終止當前執行程式 ctrl z 把前台正在執行的程式掛起並暫停 ctrl d 退出當前shell ctrl s 掛起當前shell ctrl q 解凍掛起的shell,不可行就重新連線開啟乙個終端,reboot linux 或 kill 相關程序。bg 將剛掛起的命令放到後台執行 比如...