首頁 > 軟體

Linux下/var/run目錄下的pid檔案作用

2020-06-16 17:23:29

在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


IT145.com E-mail:sddin#qq.com