新四季網

文件鎖定、解鎖方法及系統的製作方法

2023-05-10 11:59:26 2

文件鎖定、解鎖方法及系統的製作方法
【專利摘要】本發明提供的文件鎖定方法和系統實現了在多用戶協同編輯文件時,對於文件的自動鎖定,所述系統包括:狀態檢測裝置、狀態同步裝置以及遠端伺服器。本發明所述的方法文件鎖定方法是基於事件的,當文件被打開編輯時,產生一定的系統事件,狀態檢測裝置在接收到相應事件後判定文件的鎖定狀態,狀態同步裝置將該鎖定狀態同步到遠端伺服器,遠端伺服器將該狀態同步到其他用戶的設備上,其他用戶設備上的狀態同步裝置更新本地文件信息。
【專利說明】文件鎖定、解鎖方法及系統
【技術領域】
[0001]本發明涉及一種基於事件的文件鎖定、解鎖方法及系統。
【背景技術】
[0002]在如今的文件處理過程,特別是在辦公過程中,多人協同編輯文件相當普遍。但是,由於參與編輯文件的用戶是在各自的電腦上進行操作,因此很難確定在其正在編輯文件時,該文件是否正在被其他用戶編輯,或者在其編輯完成之前,是否有其他用戶編輯完成了一個新版本的文件。在這種情況下,很容易造成同一個文件中的內容衝突,甚至可能造成用戶編輯的內容丟失或者被其他數據覆蓋,從而造成一定的損失。
[0003]解決這個問題的辦法在於,在用戶編輯文件時將所編輯的文件鎖定,從而拒絕其他人修改編輯文件的可能。目前所常用的方法是用戶手動鎖定的方法。在該方法中,用戶在開始編輯文件之前,必須進行手動鎖定文件的操作。如果文件在用戶嘗試鎖定的時候未進入鎖定狀態,則把文件設定為鎖定狀態,並同步該狀態到其他用戶的設備,那麼,當前用戶鎖定成功,可以開始編輯。當用戶結束編輯後,用戶需要手動解除鎖定,系統將鎖定解除的狀態同步到其他用戶的設備,然後其他用戶方可以開始編輯文件。而如果文件在用戶嘗試鎖定的時候已經進入了鎖定狀態,那麼用戶的編輯將會被禁止,用戶只有等到鎖定該文件的用戶結束編輯,解除鎖定文件,解除鎖定的狀態被同步到該用戶的設備上時,用戶方可開始編輯文件。
[0004]這種方法的缺陷很明顯。其一,手動鎖定與解鎖文件的方式十分繁瑣,對於協同編輯的用戶來說,還需要約定何時應當鎖定文件,何時應當解鎖文件。其二,當需要編輯多個文件或者某些程序需要自動修改一些文件時,手動鎖定與解鎖的方式會大大降低文件處理的效率,同時用戶也無法正確有效地鎖定和解鎖文件。其三,如果用戶忘記解鎖,或者用戶在鎖定文件後編輯文件過程中遭遇系統崩潰、程序出錯等事件,用戶很可能無法及時解鎖文件,其他用戶無法編輯文件,從而給整個團隊帶來損失。
[0005]因此,實有必要設計一種改進的文件鎖定、解鎖方法及系統,能夠在多人協同編輯文件過程中,自動進行文件鎖定與解鎖,而無需用戶手動進行文件的鎖定與解鎖。

【發明內容】

[0006]為了實現自動進行文件鎖定與解鎖,本發明提出了一種改進的文件鎖定與解鎖方法與系統。
[0007]本發明所提出的文件鎖定與解鎖方法與系統,利用了在現有的作業系統,如Windows、Linux、OS X>Android等系統,以及文件系統中的多種事件來檢測和判斷文件是處於鎖定狀態還是解鎖狀態。當檢測到鎖定狀態的變化時,則自動將文件的鎖定狀態同步到用戶設備上,並更新本地文件信息,從而防止或者允許其他用戶修改文件。
[0008]本發明所述的文件鎖定系統包括遠端伺服器、狀態檢測裝置與狀態同步裝置。所述遠端伺服器與所述狀態同步裝置通信相連,所述狀態檢測裝置與狀態同步裝置連接。所述遠端伺服器用於在用戶設備間同步文件鎖定狀態。所述的狀態檢測裝置通過系統事件檢測文件的鎖定狀態的變化,判斷文件的鎖定狀態,並將該變化發送到狀態同步裝置。所述狀態同步裝置用於接收由狀態監測裝置發送的文件鎖定狀態的變化並且發送到遠端伺服器;從遠端伺服器獲得來自其他設備的文件鎖定狀態更新,更新本地文件信息。其中每一個用戶設備包括一個狀態檢測裝置和一個狀態同步裝置。
[0009]進一步地,所述系統還包括一個計數器,所述計數器與所述狀態檢測裝置和狀態同步裝置相連接,用於對鎖定文件的進程進行計數。其中每一個用戶設備包括一個計數器。
[0010]本發明所述的文件鎖定與解鎖方法包括以下步驟:
當前用戶設備的狀態檢測裝置接收到系統事件,並且依據事件判定文件鎖定狀態; 當前用戶設備的狀態同步裝置將文件鎖定狀態同步到遠端伺服器;
遠端伺服器將文件鎖定狀態同步到其他各個用戶設備,其他各個用戶設備的狀態同步裝置更新本地文件信息。
[0011]在本發明所述的方法中,用戶設備的狀態檢測裝置判斷文件的鎖定狀態的操作是基於用戶編輯文件所產生的系統事件的。當狀態檢測裝置接收到的事件是文件被進程打開或者編輯的事件,那麼狀態檢測裝置就判定該文件進入鎖定狀態。當狀態檢測裝置接收到的事件是文件被關閉,進程結束的事件,那麼狀態檢測裝置就判定該文件進入解鎖狀態。
[0012]當狀態檢測裝置接收到的事件是文件被關閉,進程結束的事件時,狀態檢測裝置進一步檢測是否有其他進程打開或者編輯該文件,如果沒有其他進程打開或者編輯該文件,那麼狀態檢測裝置判定該文件進入解鎖狀態;如果狀態檢測裝置檢測到仍然有其他進程打開或者編輯該文件,那麼狀態檢測裝置仍然判定該文件為鎖定狀態,直到打開或編輯文件的進程數量為0,狀態檢測裝置才判定該文件進入解鎖狀態。
[0013]這樣進一步的操作,確保了在用戶設備上同時有多個進程操作文件時,文件鎖定狀態檢測的準確性。
[0014]進一步,所述狀態同步裝置在接收到遠端伺服器發送的文件鎖定狀態之後更新本地文件信息的方式為更新本地文件的讀寫權限或者更新本地文件系統的強制鎖狀態,使用文件系統提供的強制鎖功能,以鎖定或解鎖文件。
[0015]在本發明所述的方法中,狀態檢測裝置判斷文件的鎖定狀態的方法包括:
1、檢查系統應用程式接口(API)中的open操作調用記錄,如果該記錄的操作中包含寫權限,那麼就對文件進行鎖定。
2、當接收到進程結束的事件時,解除對文件的一次鎖定,如果文件鎖定數目為0,則判定文件鎖定狀態為解鎖,同步到遠端伺服器。
[0016]上述方法進一步包括:檢測到作業系統重啟後,自動解除所有鎖定操作,並且將文件鎖定狀態同步到遠端伺服器。這樣的操作使得在系統陷入崩潰或者用戶忘記退出鎖定的文件時,自動解鎖文件以免造成損失。
[0017]上述方法進一步包括:在捕獲到文件系統級別的寫入事件時,檢測該文件是否被對應進程鎖定,如果沒有鎖定,則需要補充執行鎖定操作。這樣的操作避免了由於作業系統事件過多導致的無法及時捕獲事件的問題。
[0018]上述方法進一步包括:當用戶通過滑鼠點擊或者鍵盤操作打開文件時,捕獲用戶打開文件的事件,然後如同上述檢測進程打開文件的過程,進行鎖定操作。[0019]在本發明所述的方法中,具有另一種狀態檢測裝置判斷文件的鎖定狀態的方法:當文件發生修改後,掃描文件系統內的所有文件打開句柄,判斷是否有其他進程打開該文件,如果沒有其他進程打開該文件,那麼判定文件鎖定直到本進程結束。
[0020]在本發明所述的方法中,狀態檢測裝置判斷文件的鎖定狀態的方法也可以是:當文件發生修改後,判斷當前該文件在文件系統內部表示inode即索引節點上的打開引用計數,以判斷是否有其他進程打開該文件,鎖定該文件直到inode引用計數變成O。
[0021]在本發明所述的方法中,狀態檢測裝置判斷文件的鎖定狀態的方法還可以是:當文件發生修改後,嘗試對文件進行作業系統提供的進程間文件鎖定機制,如果不能獲得該文件鎖,那麼定時輪詢,保持該鎖定狀態直到該進程間文件鎖可以獲得。
【專利附圖】

【附圖說明】
[0022]圖1是傳統手動鎖定文件的流程圖。
[0023]圖2是本發明所述文件鎖定與解鎖系統的系統框圖。
[0024]圖3是本發明所述文件鎖定與解鎖方法的流程圖。
[0025]圖4是本發明所述方法中文件鎖定狀態的判定的邏輯框圖。
[0026]圖5是本發明所述方法中使用主動方法判定文件鎖定狀態的一個實施例的邏輯框圖。
[0027]圖6是本發明所述方法中使用主動方法判定文件鎖定狀態的一個實施例的邏輯框圖。
[0028]圖7是本發明所述方法中使用主動方法判定文件鎖定狀態的另一個實施例的邏輯框圖。
[0029]圖8是本發明所述方法中使用主動方法判定文件鎖定狀態的另一個實施例的邏輯框圖。
[0030]圖9是本發明所述方法中使用主動方法判定文件鎖定狀態的另一個實施例的邏輯框圖。
[0031]圖10是本發明所述方法中使用被動方法判定文件鎖定狀態的一個實施例的邏輯框圖。
[0032]圖11是本發明所述方法中使用被動方法判定文件鎖定狀態的一個實施例的邏輯框圖。
[0033]圖12是本發明所述方法中使用被動方法判定文件鎖定狀態的另一個實施例的邏輯框圖。
具體實施例
[0034]圖2是本發明所述文件鎖定與解鎖系統的系統框圖,所述文件鎖定與解鎖系統由遠端伺服器201、狀態同步裝置202以及狀態檢測裝置203組成。其中,遠端伺服器201與狀態同步裝置202通信相連,狀態同步裝置202與狀態檢測裝置203相連接,每一個用戶設備包括一個狀態同步裝置202、一個狀態檢測裝置203和一個計數器204,在每一個用戶設備內,計數器204分別與狀態同步裝置202和狀態檢測裝置203連接。所述遠端伺服器201用於在用戶設備間同步文件鎖定狀態。所述的狀態檢測裝置203通過系統事件檢測文件的鎖定狀態的變化,判斷文件的鎖定狀態,並將該變化發送到狀態同步裝置202。所述狀態同步裝置202用於接收由狀態檢測裝置203發送的文件鎖定狀態的變化並且同步到遠端伺服器201 ;從遠端伺服器201獲得來自其他設備的文件鎖定狀態更新,更新本地文件信息。當狀態檢測裝置203檢測文件鎖定狀態變化,並且判斷文件是鎖定還是解鎖後將這一變化傳送到狀態同步裝置202,狀態同步裝置202將文件鎖定狀態同步到遠端伺服器201,而其他用戶設備上的狀態同步裝置202從遠端伺服器201獲得文件鎖定狀態,並且更新本地文件的信息。
[0035]在一些實施例中,所述文件鎖定與解鎖系統進一步包括計數器204,用於對鎖定文件的進程進行計數。
[0036]圖3是本發明所述文件鎖定與解鎖方法的流程圖。在步驟301中,狀態檢測裝置被啟動,隨時準備接收文件的鎖定狀態。在步驟302中,用戶對文件進行操作,產生相應的系統事件。在步驟303中,狀態檢測裝置接收到系統事件,並且依據事件判定文件鎖定狀態。在步驟304中,狀態監測裝置將文件鎖定狀態發送到狀態同步裝置。在步驟305中,狀態同步裝置將文件鎖定狀態同步到遠端伺服器。在步驟306中,遠端伺服器將文件鎖定狀態同步到其他各用戶設備,其他用戶的狀態同步裝置更新本地文件信息,防止或者允許其他用戶對文件進行寫操作。
[0037]在本方法步驟306中,更新本地文件信息的方法包括兩種,其一為更新本地文件的讀寫權限,以防止或者允許其他用戶對文件進行寫操作。其二為更新本地文件的文件鎖狀態,使用文件系統的強制鎖功能鎖定或者解鎖文件,以防止或者允許其他用戶對文件進行寫操作。
[0038]在本方法中,在步驟303中所接收到的系統事件的事件源包括但不限於Windows系統的 Windows File System Watcher API>ffindows File System Filter Drivers AP1、Windows Process State AP1、Linux 系統的 Linux inotify AP1、Linux Proc API>OS X 系統的 OS X File System Events AP1、OS XNS Workspace API 等。而所述的事件包括但不限於進程啟動與結束事件,文件系統事件等。
[0039]圖4是本發明所述方法中文件鎖定狀態的判定的一個實施例的邏輯框圖,當檢測裝置獲得相應事件401後,依據該事件的種類判定文件的鎖定狀態。這裡所說的文件鎖定狀態有兩種可能性,即鎖定狀態與解鎖狀態。如果該事件401是事件是文件被進程打開事件402,那麼狀態檢測裝置就判定該文件進入鎖定狀態。當狀態檢測裝置接收到的事件是進程結束的事件403,狀態檢測裝置進一步檢測是否有其他進程打開該文件,如果沒有其他進程打開或者編輯該文件,那麼狀態檢測裝置判定該文件進入解鎖狀態;如果狀態檢測裝置檢測到仍然有其他進程打開該文件,那麼狀態檢測裝置仍然判定該文件為鎖定狀態,直到打開文件的進程數量為0,狀態檢測裝置才判定該文件進入解鎖狀態。
[0040]其中,所述文件被進程打開事件402也可以替換為被進程編輯事件、被進程鎖定事件等。所述進程結束事件403也可以為文件被關閉事件等事件。
[0041 ] 在本發明中,狀態檢測裝置判斷文件的鎖定狀態的方法包括主動方法和被動方法兩種。主動方法的優點在於速度快,精確度高,而被動方法的優點在於能夠普遍適用於所有的系統。其中主動方法的邏輯框圖如圖5所示,當進程打開文件後,狀態檢測裝置檢查文件系統應用程式接口(API)中的open操作調用記錄,如果在記錄中的參數包含寫權限,那麼判定用戶開始編輯,判定文件進入鎖定狀態,並將文件鎖定狀態同步到遠端伺服器。如果在記錄中的參數不包含寫權限,那麼就表示用戶不對文件進行編輯,無需設置鎖定狀態。狀態檢測裝置接收到進程調用closeO函數,那麼就解除一次對文件的鎖定,當文件的所有鎖定均解除,則將文件鎖定狀態同步到遠端伺服器。使用本方法的狀態檢測裝置進一步包括計數器,用於對文件的鎖定進行計數。當狀態檢測裝置接收到進程打開文件等事件,判定文件處於鎖定狀態,則計數器加1,當狀態檢測裝置接收到進程結束等事件,判定文件解鎖,則計數器減I。當計數器為0,則判定文件的所有鎖定均解除。
[0042]在另一個實施例中,所述主動方法進一步包括,當狀態檢測裝置檢測到作業系統重啟後,則將計數器置0,結束所有鎖定,並且將文件鎖定狀態同步到遠端伺服器。這樣的操作使得在系統崩潰或者用戶忘記關閉文件時,自動解鎖文件,避免造成損失。
[0043]在另一個實施例中,所述主動方法進一步包括,狀態檢測裝置接收到文件系統級別的寫入事件,則進一步檢測該文件是否被對應進程鎖定,如果沒有鎖定,則需要補充執行鎖定操作。這樣的操作避免了由於作業系統事件過多導致的無法及時捕獲事件的問題。
[0044]上述方法中的進程打開文件事件也可以替換為當用戶通過滑鼠點擊或者鍵盤操作打開文件事件。
[0045]在另一個實施例中,所述主動方法進一步包括,即使狀態檢測裝置接收到進程調用closeO函數的事件,並不立即解除文件鎖定,而是收集文件過去寫入和關閉操作之間的時間間隔,通過與預設值的比較判斷文件是否可能再次寫入。如果該時間間隔小於預設值,那麼判斷該文件仍然可能寫入,保持文件的鎖定狀態直到超時或者進程退出。如果該時間間隔大於預設值,那麼判斷該文件不再寫入,判定文件為解鎖狀態。
[0046]在一個實施例中,所述的被動方法是指當文件發生修改後,掃描文件系統內的所有文件打開句柄,判斷是否有其他進程打開該文件,如果有,則判定該文件為鎖定狀態直到全部進程結束;如果沒有,則判定該文件為鎖定狀態直到該進程結束。
[0047]另外,inode(索引節點)在文件系統中包含了有關文件的大部分信息,其中就有打開文件的引用計數來表示有多少進程打開該文件。在另一個實施例中,所述的被動方法是指當文件發生修改後,判斷當前該文件在文件系統內部表示inode上的打開引用計數,以判斷是否有其他進程打開該文件,一直鎖定該文件直到inode引用計數變成O。
[0048]在另一個實施例中,所述的被動方法是指當文件發生修改後,嘗試對文件進行作業系統提供的進程間文件鎖定機制。如果不能獲得該鎖定,那麼定時輪詢,保持該鎖定狀態直到該進程間文件鎖可以獲得。
[0049]圖6表示的是本發明所述方法的一個具體實施例的流程圖。在該實施例中,用戶通過進程打開了一個文件進行編輯。在本實施例中,檢測裝置採用主動方法進行檢測。在步驟601中,狀態檢測裝置被啟動,隨時準備接收系統事件。在步驟602中,相關進程打開文件。在步驟603中,狀態檢測裝置接收到進程打開文件的事件。在步驟604中,計數器加1,其中計數器在每一個用戶設備內。在步驟605中,狀態檢測裝置檢查設備文件系統API中的open操作調用記錄。在步驟606中,狀態檢測裝置判斷獲取的記錄中是否包含寫權限。如果包含寫權限,則判定用戶開始編輯,並且判定文件的鎖定狀態為鎖定,將鎖定狀態同步到遠端伺服器,繼續到步驟607。在步驟607中,遠端伺服器將該文件的鎖定狀態同步到各個用戶的設備上,其他用戶的設備上的狀態同步裝置更新本地文件的讀寫權限,排除寫權限,從而將文件鎖定。如果不包含寫權限,則用戶不能更改文件內容,無需設置鎖定狀態。在步驟608中,用戶結束了編輯,進程調用closeO函數退出。在步驟609中,計數器減I。在步驟610中,狀態檢測裝置檢測計數器是否為0,如果為0,則判定文件解鎖,將文件鎖定狀態同步到遠端伺服器,繼續到步驟611,若計數器不為0,則維持文件的鎖定狀態。在步驟611中,遠端伺服器將文件鎖定狀態同步到其他用戶的設備上,其他用戶設備上的狀態同步裝置更新本地文件的讀寫權限,允許寫權限,從而將文件解鎖。
[0050]在上述步驟607中,遠端伺服器將文件的鎖定狀態同步到各個用戶的設備上,其他用戶的設備上的狀態同步裝置也可以更新本地文件的強制鎖狀態,利用文件系統提供的強制鎖強制鎖定文件,從而將文件鎖定。在上述步驟611中,遠端伺服器將文件鎖定狀態同步到其他用戶的設備上,其他用戶設備上的狀態同步裝置也可以更新本地文件的強制鎖狀態,利用文件系統中的強制鎖強制解鎖文件,從而將文件鎖定。
[0051]圖7表示的是本發明所述方法的另一個具體實施例的流程圖。在本實施例中,用戶通過軟體界面打開文件,檢測方法採用主動方法。在步驟701中,狀態檢測裝置被啟動,隨時準備接收系統事件。在步驟702中,用戶通過軟體界面用滑鼠點擊打開一個文件。在步驟703中,狀態檢測裝置接收到用戶打開文件的事件。在步驟704中,計數器加I。在步驟705中,狀態檢測裝置檢查設備文件系統API中的open操作調用記錄。在步驟706中,狀態檢測裝置判斷獲取的記錄中是否包含寫權限。如果包含寫權限,則判斷用戶即將開始編輯,判定文件的鎖定狀態為鎖定,將鎖定狀態同步到遠端伺服器,繼續到步驟707。在步驟707中,遠端伺服器將該文件的鎖定狀態同步到各個用戶的設備上,其他用戶的設備上的狀態同步裝置更新本地文件的讀寫權限,排除寫權限,從而將文件鎖定。如果不包含寫權限,則用戶不能更改文件內容,無需設置鎖定狀態。-在步驟708中,用戶結束了編輯,進程調用closeO函數退出。在步驟709中,計數器-1。在步驟710中,狀態檢測裝置檢測計數器是否為0,如果為0,則判定文件解鎖,將文件鎖定狀態同步到遠端伺服器,繼續到步驟711,若計數器不為0,則維持文件的鎖定狀態。在步驟711中,遠端伺服器將文件鎖定狀態同步到其他用戶的設備上,其他用戶設備上的狀態同步裝置更新本地文件的讀寫權限,允許寫權限,從而將文件解鎖。
[0052]在上述步驟707中,遠端伺服器將文件的鎖定狀態同步到各個用戶的設備上,其他用戶的設備上的狀態同步裝置也可以更新本地文件的強制鎖狀態,利用文件系統提供的強制鎖強制鎖定文件,從而將文件鎖定。在上述步驟711中,遠端伺服器將文件鎖定狀態同步到其他用戶的設備上,其他用戶設備上的狀態同步裝置也可以更新本地文件的強制鎖狀態,利用文件系統中的強制鎖強制解鎖文件,從而將文件鎖定。
[0053]圖8表示的是本發明所述方法的另一個具體實施例的流程圖。在本實施例中,用戶通過進程打開了一個文件進行編輯,檢測方法採用主動方法。在步驟801中,狀態檢測裝置被啟動,隨時準備接收系統事件。在步驟802中,用戶通過進程打開一個文件。在步驟803中,狀態檢測裝置接收到進程打開文件的事件。在步驟804中,計數器加I。在步驟805中,狀態檢測裝置檢查設備文件系統API中的open操作調用記錄。在步驟806中,狀態檢測裝置判斷獲取的記錄中是否包含寫權限。如果包含寫權限,則判定用戶即將開始編輯,並判定文件的鎖定狀態為鎖定,將鎖定狀態同步到遠端伺服器,繼續到步驟807。在步驟807中,遠端伺服器將該文件的鎖定狀態同步到各個用戶的設備上,其他用戶的設備上的狀態同步裝置更新本地文件的讀寫權限,排除寫權限,從而將文件鎖定。如果不包含寫權限,則用戶不會更改文件內容,無需設置鎖定狀態。在步驟808中,用戶結束了編輯,進程調用closeO函數退出。在步驟809中,計數器減I。在步驟810中,狀態檢測裝置檢測計數器是否為0,如果為0,則判定文件解鎖,將文件鎖定狀態同步到遠端伺服器,繼續到步驟811,若計數器不為0,則維持文件的鎖定狀態。在步驟811中,遠端伺服器將文件鎖定狀態同步到其他用戶的設備上,其他用戶設備上的狀態同步裝置更新本地文件的讀寫權限,允許寫權限,從而將文件解鎖。此外,額外增加步驟812,在步驟812中,狀態檢測裝置還用於捕獲文件系統級別的寫入事件,包括但不限於file sync write、mmap write、async write等。當狀態檢測裝置捕獲上述文件系統級別的寫入事件,則繼續到步驟813。在步驟813中,檢測該文件是否被對應進程鎖定。如果未鎖定,則步驟814中,計數器加1,繼續到步驟815。在步驟815中,判定為文件的鎖定狀態為鎖定,將鎖定狀態同步到遠端伺服器,繼續到步驟807。如果已經鎖定,則直接繼續到步驟807。這樣做的好處在於,避免了由於系統事件過多而導致的無法及時捕獲的問題。
[0054]在上述步驟807中,遠端伺服器將文件的鎖定狀態同步到各個用戶的設備上,其他用戶的設備上的狀態同步裝置也可以更新本地文件的強制鎖狀態,利用文件系統提供的強制鎖強制鎖定文件,從而將文件鎖定。在上述步驟811中,遠端伺服器將文件鎖定狀態同步到其他用戶的設備上,其他用戶設備上的狀態同步裝置也可以更新本地文件的強制鎖狀態,利用文件系統中的強制鎖強制解鎖文件,從而將文件鎖定。
[0055]圖9表示的是本發明所述方法的另一個具體實施例的流程圖。在本實施例中,用戶通過進程打開了一個文件進行編輯,檢測方法採用主動方法。在步驟901中,狀態檢測裝置被啟動,隨時準備接收系統事件。在步驟902中,用戶通過進程打開了一個文件。在步驟903中,狀態檢測裝置接收到進程打開文件的事件。在步驟904中,計數器加I。在步驟905中,狀態檢測裝置檢查設備文件系統API中的open操作調用記錄。在步驟906中,狀態檢測裝置判斷獲取的記錄中是否包含寫權限。如果包含寫權限,則判定用戶即將開始編輯,並判定文件的鎖定狀態為鎖定,將鎖定狀態同步到遠端伺服器,繼續到步驟907。在步驟907中,遠端伺服器將該文件的鎖定狀態同步到各個用戶的設備上,其他用戶的設備上的狀態同步裝置更新本地文件的讀寫權限,排除寫權限,從而將文件鎖定。如果不包含寫權限,則用戶不能更改文件內容,無需設置鎖定狀態。在步驟908中,用戶結束了編輯,進程調用closeO函數退出。進程並不立即判定該文件解鎖,而是繼續到步驟9081。在步驟9081中,狀態檢測裝置收集文件歷史上的關閉與再寫入之間的時間間隔。繼續到步驟9082,判斷文件是否可能再次寫入。這裡取預設值3分鐘作為判斷基準,如果文件歷史上的關閉與再寫入之間的時間間隔小於3分鐘,則判定文件仍然可能寫入,保持文件的鎖定狀態直到超出3分鐘或者進程退出,再繼續到步驟909。如果文件歷史上的關閉與再寫入之間的時間間隔小於3分鐘,則直接繼續到步驟909。在步驟909中,計數器減I。在步驟910中,狀態檢測裝置檢測計數器是否為0,如果為0,則判定文件解鎖,將文件鎖定狀態同步到遠端伺服器,繼續到步驟911,若計數器不為0,則維持文件的鎖定狀態。在步驟911中,遠端伺服器將文件鎖定狀態同步到其他用戶的設備上,其他用戶設備上的狀態同步裝置更新本地文件的讀寫權限,允許寫權限,從而將文件解鎖。本實施例中的判斷基準3分鐘也可以由本領域普通技術人員取為其他值。本實施例這樣設置的好處在於方便了在頻繁修改文件的情況下用戶的操作,避免頻繁的鎖定和解鎖文件。
[0056]在上述步驟907中,遠端伺服器將文件的鎖定狀態同步到各個用戶的設備上,其他用戶的設備上的狀態同步裝置也可以更新本地文件的強制鎖狀態,利用文件系統提供的強制鎖強制鎖定文件,從而將文件鎖定。在上述步驟911中,遠端伺服器將文件鎖定狀態同步到其他用戶的設備上,其他用戶設備上的狀態同步裝置也可以更新本地文件的強制鎖狀態,利用文件系統中的強制鎖強制解鎖文件,從而將文件鎖定。
[0057]圖10表示的是本發明所述方法的另一個具體實施例的流程圖。在本實施例中,用戶通過進程打開了一個文件進行編輯,檢測方法採用被動方法。在步驟1001中,狀態檢測裝置被啟動,隨時準備接收系統事件。在步驟1002中,用戶通過進程打開一個文件,進行編輯,文件發生變化。在步驟1003中,狀態檢測裝置接收到文件發生變化的事件。在步驟1004中,狀態檢測裝置掃描文件系統內的所有文件打開句柄。在步驟1005中,狀態檢測裝置根據掃描到的文件打開句柄,判斷是否有其他進程打開文件。如果有其他進程打開文件,則繼續到步驟1006,判定該文件的鎖定狀態為鎖定。在步驟1005中,如果判斷到有其他進程打開文件,則當進程結束,狀態檢測裝置接收到進程結束事件時,如步驟1007所示,繼續到步驟1008,再一次判斷是否有其他進程打開文件,如果有其他進程打開文件,則返回到步驟1006,再一次執行步驟1006、1007、1008 ;如果沒有其他進程打開文件,則繼續到步驟1009,判定文件解鎖,並同步到遠端伺服器。繼續到步驟1014,遠端伺服器將文件鎖定狀態同步到其他用戶的設備。繼續到步驟1015,其他用戶設備上的狀態同步裝置接收到文件鎖定狀態,並更新本地文件的信息,可以是更新文件的讀寫權限,允許寫權限,也可以是更新文件的強制鎖狀態,利用文件系統提供的強制鎖功能強制鎖定文件。在步驟1005中,如果沒有其他進程打開文件,則繼續到步驟1010,判定文件鎖定狀態為鎖定,並同步到遠端伺服器。繼續到步驟1011,遠端伺服器將文件鎖定狀態同步到其他用戶的設備。繼續到步驟1012,其他用戶設備上的狀態同步裝置接收到文件鎖定狀態,並更新本地文件的信息,可以是更新文件的讀寫權限,排除寫權限,也可以是更新文件的強制鎖狀態,利用文件系統提供的強制鎖功能強制解鎖文件。在這種情況下,即當步驟1005中,判斷到沒有其他進程打開文件,則如果狀態檢測裝置接收到進程結束事件,如步驟1013所示,則繼續到步驟1009,執行步驟1009、步驟1014和步驟1015。
[0058]圖11表示的是本發明所述方法的另一個具體實施例的流程圖。在本實施例中,用戶通過進程打開了一個文件進行編輯,檢測方法取被動方法。在本實施例中,用戶通過進程打開了一個文件進行編輯,檢測方法取被動方法。在步驟1101中,狀態檢測裝置被啟動,隨時準備接收系統事件。在步驟1102中,用戶通過進程打開一個文件,進行編輯,文件發生變化。在步驟1103中,狀態檢測裝置接收到文件發生變化的事件。在步驟1104中,狀態檢測裝置獲取文件系統內部inode (索引節點)上的打開引用計數。在步驟1105中,判斷inode上的打開引用計數是否為0,這是為了判斷是否有其他進程打開文件。如果inode上的打開引用計數不為0,即有其他進程打開文件,則繼續到步驟1106,判定該文件的鎖定狀態為鎖定。在步驟1105中,如果inode上的引用計數不為0,即有其他進程打開文件,則當進程結束,狀態檢測裝置接收到進程結束事件時,如步驟1107所示,繼續到步驟1108,再一次判斷inode上的打開引用計數是否為0,如果inode上的打開引用計數不為0,則返回到步驟1106,再一次執行步驟1106、1107、1108 ;如果inode上的打開引用計數為0,則繼續到步驟1109,判定文件解鎖,並同步到遠端伺服器。繼續到步驟1114,遠端伺服器將文件鎖定狀態同步到其他用戶的設備。繼續到步驟1115,其他用戶設備上的狀態同步裝置接收到文件鎖定狀態,並更新本地文件的信息,可以是更新文件的讀寫權限,允許寫權限,也可以是更新本地文件的強制鎖狀態,利用文件系統的強制鎖功能解鎖文件。在步驟1105中,如果沒有其他進程打開文件,則繼續到步驟1110,判定文件鎖定狀態為鎖定,並同步到遠端伺服器。繼續到步驟1111,遠端伺服器將文件鎖定狀態同步到其他用戶的設備。繼續到步驟1112,其他用戶設備上的狀態同步裝置接收到文件鎖定狀態,並更新本地文件的信息,可以是更新文件的讀寫權限,排除寫權限,也可以是更新本地文件的強制鎖狀態,利用文件系統的強制鎖功能強制鎖定文件。在這種情況下,即當步驟1105中,inode上的打開引用計數不為0,即沒有其他進程打開文件,則如果狀態檢測裝置接收到進程結束事件,如步驟1113所示,則繼續到步驟1109,執行步驟1109、步驟1114和步驟1115。
[0059]系統間文件鎖定機制是一些系統,例如Unix、Linux等,自帶的文件鎖定機制,在這種機制中,當一個程序正在對文件進行寫操作時,文件就會進入一個暫時狀態,在這個狀態下,如果另外一個程序嘗試讀這個文件,就會停下來等待這個狀態的結束。圖12表示的是本發明所述方法的另一個具體實施例的流程圖。在本實施例中,用戶通過進程打開了一個文件進行編輯,檢測方法採用被動方法,利用了進程間文件鎖定機制。在步驟1201中,狀態檢測裝置被啟動,隨時準備接收系統事件。在步驟1202中,用戶通過進程打開一個文件,進行編輯,文件發生變化。在步驟1203中,狀態檢測裝置接收到文件發生變化的事件。在步驟1204中,狀態檢測裝置嘗試對文件進行作業系統提供的進程間文件鎖定機制。在步驟1205中,判斷是否可以獲得該文件鎖,如果不能夠獲得,則保持文件的鎖定狀態,並且定時輪詢,即定時對文件嘗試進行作業系統提供的進程間文件鎖定機制;如果能夠獲得該文件鎖,那麼對該文件應用該文件鎖。
[0060]說明書中所列的具體實施例是為了展示並且使公眾能夠更好地理解本發明的內容。應當注意,本領域的普通技術人員能夠在不背離本發明的主要精神以及範圍的前提下對於本發明做出並實現多種的修改的技術方案。例如,所採用的系統事件可以是除了進程打開、滑鼠打開等事件以外的修改編輯文件的事件,也可以採用其他方法檢測是否有多個進程打開文件等。因此在本說明書中所列的具體實施例不應當被理解為對於本發明的限制。
【權利要求】
1.一種文件鎖定方法,其特徵在於包括以下步驟: 步驟1:當前用戶設備根據系統事件判定文件鎖定狀態; 步驟2:當前用戶設備將所述文件鎖定狀態同步到遠端伺服器; 步驟3:所述遠端伺服器將所述文件鎖定狀態同步到其他各個用戶設備; 步驟4:其他各個用戶設備根據獲得的所述文件鎖定狀態,更新本地文件信息。
2.如權利要求1所述的文件鎖定方法,其特徵在於,所述系統事件是進程打開文件事件、進程結束事件、用戶通過滑鼠點擊打開文件事件或關閉文件事件。
3.如權利要求1所述的文件鎖定方法,其特徵在於,所述步驟I中根據系統事件判定文件鎖定狀態包括,當所述系統事件是文件被進程打開或者編輯的事件,那麼就判定所述文件進入鎖定狀態;當所述事件是文件被關閉或者進程結束的事件,則判定所述文件進入解鎖狀態。
4.如權利要求3所述的文件鎖定方法,其特徵在於,所述根據系統事件判定文件鎖定狀態進一步包括,當所述系統事件是文件被關閉或者進程結束的事件時,進一步檢測是否有其他進程打開該文件,如果沒有其他進程打開該文件,則判定該文件進入解鎖狀態,如果仍然有其他進程打開編輯該文件,那麼所述狀態檢測裝置仍然判定該文件為鎖定狀態,直到打開編輯文件的進程數量為0,才判定該文件進入解鎖狀態。
5.如權利要求1所述的文件鎖定方法,其特徵在於,所述步驟I中根據系統事件判定文件鎖定狀態包括,檢查系統應用程式接口中的open操作調用記錄,如果該記錄的操作中包含寫權限,那麼判定文件進入鎖定狀態。
6.如權利要求1所述的文件鎖定方法,其特徵在於,所述步驟I中根據系統事件判斷文件鎖定狀態包括,當所述系統事件是文件系統級別的寫入事件,那麼檢測該文件是否被對應進程鎖定,如果沒有鎖定,則補充執行鎖定操作。
7.如權利要求1所述的文件鎖定方法,其特徵在於,所述步驟1中根據系統事件判斷文件鎖定狀態包括,當所述系統事件是文件修改事件,掃描文件系統內的所有文件打開句柄,判斷是否有其他進程打開該文件,如果沒有其他進程打開該文件,那麼判定該文件鎖定直到本進程結束,或者判斷當前該文件在索引節點上的打開引用計數,判定該文件鎖定直到索引節點的打開引用計數為0,或者嘗試對文件進行作業系統提供的進程間文件鎖定機制,如果不能獲得該文件鎖,那麼定時輪詢,保持該鎖定狀態直到該進程間文件鎖能夠獲得。
8.如權利要求1-7中任一項所述的文件鎖定方法,其特徵在於,所述步驟I中根據系統事件判斷文件鎖定狀態包括,當所述系統事件是系統重啟事件時,解除所有鎖定操作,並且將文件鎖定狀態同步到所述遠端伺服器。
9.如權利要求1-7中任一項所述的文件鎖定方法,其特徵在於,所述更新本地文件信息是指更新本地文件的讀寫權限或者更新本地文件的強制鎖狀態。
10.一種文件鎖定系統,其特徵在於,包括: 遠端伺服器,連接各個用戶設備,用於在用戶設備間同步文件鎖定狀態; 狀態檢測裝置,設置在每一個用戶設備端,用於檢測文件的鎖定狀態的變化,判斷文件的鎖定狀態; 狀態同步裝置,設置在每一個用戶設備端,用於接收來自狀態檢測裝置的文件鎖定狀態以將文件鎖定狀態同步到遠端伺服器,以及用於從遠端伺服器同步來自其他用戶設備的文件鎖定狀態,更新本地文件信息; 其中,所述遠端伺服器與所述狀態同步裝置通信相連,在每一個用戶設備內,所述狀態檢測裝置與所述狀態 同步裝置連接。
【文檔編號】G06F21/62GK103795813SQ201410085383
【公開日】2014年5月14日 申請日期:2014年3月10日 優先權日:2014年3月10日
【發明者】楊劍, 韓竹 申請人:上海亦存網絡科技有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀