2011-04-07 71 views
1

我正在開發一個程序,該程序向服務器發送一個命令,並在服務器上創建一個文件,讓它知道其連接,例如,程序運行時創建一個文件,聲稱「在這裏」每次它循環,一個php站點然後檢查服務器的文件,如果文件在那裏它知道程序連接。然而,當它突然停止說,因爲計算機關閉,它可能發生在文件創建時關機,所以現在說5分鐘關機,如果服務器檢查文件將在那裏,有什麼辦法讓程序刪除該文件意外關機?這是在C++上。意外關機後的控制

謝謝,

回答

2

您可能最好爲此目的創建一個文件以外的文件。由於文件通常用作更永久的存儲解決方案,因此不是您想要的。

我推薦的是類似於互斥體或其他類型的命名的,操作系統實現的跨進程標記或同步原語。此後,如果程序結束(通常或異常),操作系統將爲您清理令牌,因此您無需擔心手動清理。

在Windows上,您可以使用類似命名互斥體的東西,但不完全確定您將在Linux或其他Unix上使用什麼,但最明顯的是這樣的可用。

0

如果創建過程是Windows,是的。創建一個標記爲FILE_FLAG_DELETE_ON_CLOSE的文件。這將在其句柄關閉時自動刪除文件。當您的應用以任何方式終止時,手柄也會關閉。

雖然我不確定這個文件機制是否是最安全的解決方案。您的客戶端程序每隔10秒從PHP站點獲取一個簡單的網頁可能會更容易。