使用 C 或 C 建立單一實例應用程式
為了確保應用程式只有一個實例同時運行,可以考慮多種技術。以下是一些選項及其優點:
檔案鎖定:
一種方法是使用檔案鎖定。應用程式會建立一個唯一的文件,當它執行時,它會取得該文件的排他鎖。如果另一個實例嘗試執行,它將無法取得鎖,表示一個實例已經在運行。
互斥體:
互斥體是允許多個執行緒或進程的同步物件安全地存取共享資源而不會發生衝突。在這種情況下,可以使用互斥鎖來控制對正在運行的應用程式的存取。當第一個實例取得互斥鎖時,任何後續實例都會被阻止,直到互斥鎖被釋放。
Unix 域套接字:
建立並綁定具有唯一名稱的 Unix 域套接字是另一種方法。應用程式的第一個實例成功綁定到套接字。當另一個實例嘗試綁定到相同名稱時,它將失敗並可以連接到現有套接字與第一個實例進行通訊。
實作範例:
這裡使用檔案鎖定的範例實作:
<code class="c">#include <sys/file.h> #include <errno.h> int main() { int pid_file = open("/var/run/my_app.pid", O_CREAT | O_RDWR, 0666); int rc = flock(pid_file, LOCK_EX | LOCK_NB); if (rc) { if (EWOULDBLOCK == errno) { // Another instance is running return 1; } } else { // This is the first instance } // Perform application logic return 0; }</code>
這種方法可確保只有一個應用程式實例正在執行,並且具有能夠處理過時的pid 檔案的優點。
以上是如何確保C/C應用程式一次只運行一個實例?的詳細內容。更多資訊請關注PHP中文網其他相關文章!