linux下如何讓程式無法重複啟動

2021-07-13 02:54:58 字數 1072 閱讀 2409

通常情況下乙個程式可以被多次執行,也就存在多個相同的程序。有時候我們有些全域性資源只允許單程序訪問,為了不讓程序多起,要實現程序在一台機器上只能有乙個例項的方法。

經查詢,可以使用flock的方式,建乙個lock file,讓程式執行前先檢查是否有執行中的例項,即對檔案加鎖。

single_program.c

#include 

#include

#include

#include

#include

#include

#include

#include

int main()

} else

exit(0);

}

執行結果

[root@centos6 data]# gcc single_program.c -o single_program

[root@centos6 data]# ./single_program

已啟動新例項,輸入任何字元退出…

以上程式會阻塞等待,然後新開乙個終端,同樣執行該程式

[root@centos6 data]# ./single_program

該例項已經執行,退出!

[root@centos6 data]#

可以看到程式一啟動就退出了。檢視鎖檔案

[root@centos6 data]# cat /tmp/single_proc.lock

pid:7162

表明現在已經加了乙個全域性的鎖檔案,無法在啟動新程序了。檢視已經啟動的程序

[root@centos6 data]# ps -ef|grep -v grep|grep single_program

root 7162 6521 0 22:13 pts/0 00:00:00 ./single_program

確實只有乙個程序,這樣的方式我們可以用在一些只允許一台機器上啟動單程序的特殊場景。

始於2011-12-03,tencent;更新至2016-06-04,杭州。

Linux下遠端連線斷開後如何讓程式繼續執行

我工作遇到的問題的 1 linux長時間自動化測試,又不能關閉shell,關閉重頭來 2 很多程式不能斷,例如node服務 mogo等。答案 有辦法 解決辦法 以centos系統為例 1 安裝screen命令 yum install screen 安裝 2 建立screen會話 screen s m...

Linux下遠端連線斷開後如何讓程式繼續執行

2017年12月29日 18 49 16 熱血 文宗 閱讀數 560 標籤 linux shell centos 更多個人分類 linux 我工作遇到的問題的 1 linux長時間自動化測試,又不能關閉shell,關閉重頭來 2 很多程式不能斷,例如node服務 mogo等。答案 有辦法 解決辦法 ...

Linux下避免程式被重複執行

在linux下,有些程式同時執行多個例項時會出錯。因此,需要使用一些方法避免程式被重複執行,即同一時間段內只能有乙個程式例項執行。程式啟動的時候開啟某個鎖檔案並對該檔案加鎖,退出程式時解鎖。如果無法正常加鎖,則說明程式已經在記憶體中執行了,當前執行緒return即可。首先,先以建立 可讀寫模式開啟鎖...