2021-05-12 14:32:11
Linux下/var/run目錄下的pid檔案作用
在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, "%dn", (int) pid);
pidsize = strlen(buf);
if ((tmp = write (fd, buf, pidsize)) != (int)pidsize){
//寫入不成功, 退出......
}
(4) 一些注意事項:
i) 如果進程退出,則該進程加的鎖自動失效。
ii) 如果進程關閉了該檔案描述符fd, 則加的鎖失效。(整個進程執行期間不能關閉此檔案描述符)
iii) 鎖的狀態不會被子進程繼承。如果進程關閉則鎖失效而不管子進程是否在執行。
本文永久更新連結地址:http://www.linuxidc.com/Linux/2017-01/139620.htm
相關文章