歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux下/var/run目錄下的pid文件作用

Linux下/var/run目錄下的pid文件作用

日期:2017/2/28 13:44:34   编辑:Linux教程

在Linux系統的目錄/var/run下面一般我們都會看到很多的*.pid文件。而且往往新安裝的程序在運行後也會在/var/run目錄下面產生自己的pid文件。那麼這些pid文件有什麼作用呢?它的內容又是什麼呢?

(1) pid文件的內容:pid文件為文本文件,內容只有一行, 記錄了該進程的ID。

用cat命令可以看到。

(2) pid文件的作用:防止進程啟動多個副本。只有獲得pid文件(固定路徑固定文件名)寫入權限(F_WRLCK)的進程才能正常啟動並把自身的PID寫入該文件中。其它同一個程序的多余進程則自動退出。

(3) 編程技巧:

調用fcntl設置pid文件的鎖定F_SETLK狀態,其中鎖定的標志位F_WRLCK。

如果成功鎖定,則寫入進程當前PID,進程繼續往下執行。

如果鎖定不成功,說明已經有同樣的進程在運行了,當前進程結束退出。

lock.l_type = F_WRLCK;
lock.l_whence = SEEK_SET;

if (fcntl(fd, F_SETLK, &lock) < 0){
//鎖定不成功, 退出......
}
sprintf (buf, "%d\n", (int) pid);
pidsize = strlen(buf);
if ((tmp = write (fd, buf, pidsize)) != (int)pidsize){
//寫入不成功, 退出......
}

(4) 一些注意事項:
i) 如果進程退出,則該進程加的鎖自動失效。
ii) 如果進程關閉了該文件描述符fd, 則加的鎖失效。(整個進程運行期間不能關閉此文件描述符)
iii) 鎖的狀態不會被子進程繼承。如果進程關閉則鎖失效而不管子進程是否在運行。

Copyright © Linux教程網 All Rights Reserved