Linux下避免程式被重複執行

2021-10-14 00:18:05 字數 870 閱讀 2260

在linux下,有些程式同時執行多個例項時會出錯。因此,需要使用一些方法避免程式被重複執行,即同一時間段內只能有乙個程式例項執行。

程式啟動的時候開啟某個鎖檔案並對該檔案加鎖,退出程式時解鎖。

如果無法正常加鎖,則說明程式已經在記憶體中執行了,當前執行緒return即可。

首先,先以建立+可讀寫模式開啟鎖檔案temp.lock(可自行定義檔名)

之後使用flock檔案對檔案加鎖,如果加鎖失敗,檢查errno是否為ewouldblock。如果是則說明已經有程序持鎖,即程式已經有例項在執行。

否則持鎖並繼續邏輯。

檢測**如下:

int

isprocessrunning()

}return0;

}

在main函式中,只需檢測返回值不為0退出即可。

if

(isprocessrunning()

)return

0;

備註:

flock函式:

標頭檔案 #include

函式原型 int flock(int fd,int operation);

引數 operation有下列四種情況:

lock_sh 建立共享鎖定。多個程序可同時對同乙個檔案作共享鎖定。

lock_ex 建立互斥鎖定。乙個檔案同時只有乙個互斥鎖定。

lock_un 解除檔案鎖定狀態。

lock_nb 無法建立鎖定時,此操作可不被阻斷,馬上返回程序。通常與lock_sh或lock_ex 做or(|)組合。

返回值 返回0表示成功,若有錯誤則返回-1,錯誤**存於errno。

防止程式被重複執行

防止程式被重複執行 第一法 windows95的程式一般都可以重複執行,例如你按下win e組合鍵即啟動資 源管理器,如果再按win e組合鍵又會出現乙個資源管理器,這兩個程式互不幹 擾。有時候你可以需要製作這樣乙個程式 當該程式已經執行時,若使用者企圖 再次執行該程式則只會啟用那個已執行的程式,而...

HOOK 避免自己程式被勾住

一直以來有個疑問,就是如果別人在你的電腦上安裝了鍵盤鉤子來監視你的鍵盤按鍵動作,我的程式怎麼才能避開這些全域性鍵盤鉤子 system wide hook 的監視.正好最近一段時間因為工作關係在研究鉤子,順便研究了一下這個問題,今天算是找到了乙個解決辦法.解決辦法 在我的程式中安裝乙個區域性鍵盤鉤子 ...

Shell指令碼避免重複執行的方法

很多用cron定時執行的shell指令碼可能會由於各種原因執行很久,會有必要在執行的時候先檢查一下自身是否還在執行。本文提供的linux shell指令碼用以檢查以命令sh 來執行的shell指令碼。要對其他東西進行唯一性檢查,可以稍微修改一下源 複製 如下 檢查通過sh命令執行的shell指令碼是...