CN103795813A - 文件锁定、解锁方法及系统 - Google Patents
文件锁定、解锁方法及系统 Download PDFInfo
- Publication number
- CN103795813A CN103795813A CN201410085383.7A CN201410085383A CN103795813A CN 103795813 A CN103795813 A CN 103795813A CN 201410085383 A CN201410085383 A CN 201410085383A CN 103795813 A CN103795813 A CN 103795813A
- Authority
- CN
- China
- Prior art keywords
- file
- state
- lock
- event
- locking
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供的文件锁定方法和系统实现了在多用户协同编辑文件时,对于文件的自动锁定,所述系统包括:状态检测装置、状态同步装置以及远端服务器。本发明所述的方法文件锁定方法是基于事件的,当文件被打开编辑时,产生一定的系统事件,状态检测装置在接收到相应事件后判定文件的锁定状态,状态同步装置将该锁定状态同步到远端服务器,远端服务器将该状态同步到其他用户的设备上,其他用户设备上的状态同步装置更新本地文件信息。
Description
技术领域
本发明涉及一种基于事件的文件锁定、解锁方法及系统。
背景技术
在如今的文件处理过程,特别是在办公过程中,多人协同编辑文件相当普遍。但是,由于参与编辑文件的用户是在各自的电脑上进行操作,因此很难确定在其正在编辑文件时,该文件是否正在被其他用户编辑,或者在其编辑完成之前,是否有其他用户编辑完成了一个新版本的文件。在这种情况下,很容易造成同一个文件中的内容冲突,甚至可能造成用户编辑的内容丢失或者被其他数据覆盖,从而造成一定的损失。
解决这个问题的办法在于,在用户编辑文件时将所编辑的文件锁定,从而拒绝其他人修改编辑文件的可能。目前所常用的方法是用户手动锁定的方法。在该方法中,用户在开始编辑文件之前,必须进行手动锁定文件的操作。如果文件在用户尝试锁定的时候未进入锁定状态,则把文件设定为锁定状态,并同步该状态到其他用户的设备,那么,当前用户锁定成功,可以开始编辑。当用户结束编辑后,用户需要手动解除锁定,系统将锁定解除的状态同步到其他用户的设备,然后其他用户方可以开始编辑文件。而如果文件在用户尝试锁定的时候已经进入了锁定状态,那么用户的编辑将会被禁止,用户只有等到锁定该文件的用户结束编辑,解除锁定文件,解除锁定的状态被同步到该用户的设备上时,用户方可开始编辑文件。
这种方法的缺陷很明显。其一,手动锁定与解锁文件的方式十分繁琐,对于协同编辑的用户来说,还需要约定何时应当锁定文件,何时应当解锁文件。其二,当需要编辑多个文件或者某些程序需要自动修改一些文件时,手动锁定与解锁的方式会大大降低文件处理的效率,同时用户也无法正确有效地锁定和解锁文件。其三,如果用户忘记解锁,或者用户在锁定文件后编辑文件过程中遭遇系统崩溃、程序出错等事件,用户很可能无法及时解锁文件,其他用户无法编辑文件,从而给整个团队带来损失。
因此,实有必要设计一种改进的文件锁定、解锁方法及系统,能够在多人协同编辑文件过程中,自动进行文件锁定与解锁,而无需用户手动进行文件的锁定与解锁。
发明内容
为了实现自动进行文件锁定与解锁,本发明提出了一种改进的文件锁定与解锁方法与系统。
本发明所提出的文件锁定与解锁方法与系统,利用了在现有的操作系统,如Windows、Linux、OS X、Android等系统,以及文件系统中的多种事件来检测和判断文件是处于锁定状态还是解锁状态。当检测到锁定状态的变化时,则自动将文件的锁定状态同步到用户设备上,并更新本地文件信息,从而防止或者允许其他用户修改文件。
本发明所述的文件锁定系统包括远端服务器、状态检测装置与状态同步装置。所述远端服务器与所述状态同步装置通信相连,所述状态检测装置与状态同步装置连接。所述远端服务器用于在用户设备间同步文件锁定状态。所述的状态检测装置通过系统事件检测文件的锁定状态的变化,判断文件的锁定状态,并将该变化发送到状态同步装置。所述状态同步装置用于接收由状态监测装置发送的文件锁定状态的变化并且发送到远端服务器;从远端服务器获得来自其他设备的文件锁定状态更新,更新本地文件信息。其中每一个用户设备包括一个状态检测装置和一个状态同步装置。
进一步地,所述系统还包括一个计数器,所述计数器与所述状态检测装置和状态同步装置相连接,用于对锁定文件的进程进行计数。其中每一个用户设备包括一个计数器。
本发明所述的文件锁定与解锁方法包括以下步骤:
当前用户设备的状态检测装置接收到系统事件,并且依据事件判定文件锁定状态;
当前用户设备的状态同步装置将文件锁定状态同步到远端服务器;
远端服务器将文件锁定状态同步到其他各个用户设备,其他各个用户设备的状态同步装置更新本地文件信息。
在本发明所述的方法中,用户设备的状态检测装置判断文件的锁定状态的操作是基于用户编辑文件所产生的系统事件的。当状态检测装置接收到的事件是文件被进程打开或者编辑的事件,那么状态检测装置就判定该文件进入锁定状态。当状态检测装置接收到的事件是文件被关闭,进程结束的事件,那么状态检测装置就判定该文件进入解锁状态。
当状态检测装置接收到的事件是文件被关闭,进程结束的事件时,状态检测装置进一步检测是否有其他进程打开或者编辑该文件,如果没有其他进程打开或者编辑该文件,那么状态检测装置判定该文件进入解锁状态;如果状态检测装置检测到仍然有其他进程打开或者编辑该文件,那么状态检测装置仍然判定该文件为锁定状态,直到打开或编辑文件的进程数量为0,状态检测装置才判定该文件进入解锁状态。
这样进一步的操作,确保了在用户设备上同时有多个进程操作文件时,文件锁定状态检测的准确性。
进一步,所述状态同步装置在接收到远端服务器发送的文件锁定状态之后更新本地文件信息的方式为更新本地文件的读写权限或者更新本地文件系统的强制锁状态,使用文件系统提供的强制锁功能,以锁定或解锁文件。
在本发明所述的方法中,状态检测装置判断文件的锁定状态的方法包括:
1、检查系统应用程序接口(API)中的open操作调用记录,如果该记录的操作中包含写权限,那么就对文件进行锁定。
2、当接收到进程结束的事件时,解除对文件的一次锁定,如果文件锁定数目为0,则判定文件锁定状态为解锁,同步到远端服务器。
上述方法进一步包括:检测到操作系统重启后,自动解除所有锁定操作,并且将文件锁定状态同步到远端服务器。这样的操作使得在系统陷入崩溃或者用户忘记退出锁定的文件时,自动解锁文件以免造成损失。
上述方法进一步包括:在捕获到文件系统级别的写入事件时,检测该文件是否被对应进程锁定,如果没有锁定,则需要补充执行锁定操作。这样的操作避免了由于操作系统事件过多导致的无法及时捕获事件的问题。
上述方法进一步包括:当用户通过鼠标点击或者键盘操作打开文件时,捕获用户打开文件的事件,然后如同上述检测进程打开文件的过程,进行锁定操作。
在本发明所述的方法中,具有另一种状态检测装置判断文件的锁定状态的方法:当文件发生修改后,扫描文件系统内的所有文件打开句柄,判断是否有其他进程打开该文件,如果没有其他进程打开该文件,那么判定文件锁定直到本进程结束。
在本发明所述的方法中,状态检测装置判断文件的锁定状态的方法也可以是:当文件发生修改后,判断当前该文件在文件系统内部表示inode即索引节点上的打开引用计数,以判断是否有其他进程打开该文件,锁定该文件直到inode引用计数变成0。
在本发明所述的方法中,状态检测装置判断文件的锁定状态的方法还可以是:当文件发生修改后,尝试对文件进行操作系统提供的进程间文件锁定机制,如果不能获得该文件锁,那么定时轮询,保持该锁定状态直到该进程间文件锁可以获得。
附图说明
图1是传统手动锁定文件的流程图。
图2是本发明所述文件锁定与解锁系统的系统框图。
图3是本发明所述文件锁定与解锁方法的流程图。
图4是本发明所述方法中文件锁定状态的判定的逻辑框图。
图5是本发明所述方法中使用主动方法判定文件锁定状态的一个实施例的逻辑框图。
图6是本发明所述方法中使用主动方法判定文件锁定状态的一个实施例的逻辑框图。
图7是本发明所述方法中使用主动方法判定文件锁定状态的另一个实施例的逻辑框图。
图8是本发明所述方法中使用主动方法判定文件锁定状态的另一个实施例的逻辑框图。
图9是本发明所述方法中使用主动方法判定文件锁定状态的另一个实施例的逻辑框图。
图10是本发明所述方法中使用被动方法判定文件锁定状态的一个实施例的逻辑框图。
图11是本发明所述方法中使用被动方法判定文件锁定状态的一个实施例的逻辑框图。
图12是本发明所述方法中使用被动方法判定文件锁定状态的另一个实施例的逻辑框图。
具体实施例
图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获得文件锁定状态,并且更新本地文件的信息。
在一些实施例中,所述文件锁定与解锁系统进一步包括计数器204,用于对锁定文件的进程进行计数。
图3是本发明所述文件锁定与解锁方法的流程图。在步骤301中,状态检测装置被启动,随时准备接收文件的锁定状态。在步骤302中,用户对文件进行操作,产生相应的系统事件。在步骤303中,状态检测装置接收到系统事件,并且依据事件判定文件锁定状态。在步骤304中,状态监测装置将文件锁定状态发送到状态同步装置。在步骤305中,状态同步装置将文件锁定状态同步到远端服务器。在步骤306中,远端服务器将文件锁定状态同步到其他各用户设备,其他用户的状态同步装置更新本地文件信息,防止或者允许其他用户对文件进行写操作。
在本方法步骤306中,更新本地文件信息的方法包括两种,其一为更新本地文件的读写权限,以防止或者允许其他用户对文件进行写操作。其二为更新本地文件的文件锁状态,使用文件系统的强制锁功能锁定或者解锁文件,以防止或者允许其他用户对文件进行写操作。
在本方法中,在步骤303中所接收到的系统事件的事件源包括但不限于Windows系统的Windows File System Watcher API、Windows FileSystem Filter Drivers API、Windows Process State API、Linux系统的Linuxinotify API、Linux Proc API、OS X系统的OS X File System Events API、OS XNS Workspace API等。而所述的事件包括但不限于进程启动与结束事件,文件系统事件等。
图4是本发明所述方法中文件锁定状态的判定的一个实施例的逻辑框图,当检测装置获得相应事件401后,依据该事件的种类判定文件的锁定状态。这里所说的文件锁定状态有两种可能性,即锁定状态与解锁状态。如果该事件401是事件是文件被进程打开事件402,那么状态检测装置就判定该文件进入锁定状态。当状态检测装置接收到的事件是进程结束的事件403,状态检测装置进一步检测是否有其他进程打开该文件,如果没有其他进程打开或者编辑该文件,那么状态检测装置判定该文件进入解锁状态;如果状态检测装置检测到仍然有其他进程打开该文件,那么状态检测装置仍然判定该文件为锁定状态,直到打开文件的进程数量为0,状态检测装置才判定该文件进入解锁状态。
其中,所述文件被进程打开事件402也可以替换为被进程编辑事件、被进程锁定事件等。所述进程结束事件403也可以为文件被关闭事件等事件。
在本发明中,状态检测装置判断文件的锁定状态的方法包括主动方法和被动方法两种。主动方法的优点在于速度快,精确度高,而被动方法的优点在于能够普遍适用于所有的系统。其中主动方法的逻辑框图如图5所示,当进程打开文件后,状态检测装置检查文件系统应用程序接口(API)中的open操作调用记录,如果在记录中的参数包含写权限,那么判定用户开始编辑,判定文件进入锁定状态,并将文件锁定状态同步到远端服务器。如果在记录中的参数不包含写权限,那么就表示用户不对文件进行编辑,无需设置锁定状态。状态检测装置接收到进程调用close()函数,那么就解除一次对文件的锁定,当文件的所有锁定均解除,则将文件锁定状态同步到远端服务器。使用本方法的状态检测装置进一步包括计数器,用于对文件的锁定进行计数。当状态检测装置接收到进程打开文件等事件,判定文件处于锁定状态,则计数器加1,当状态检测装置接收到进程结束等事件,判定文件解锁,则计数器减1。当计数器为0,则判定文件的所有锁定均解除。
在另一个实施例中,所述主动方法进一步包括,当状态检测装置检测到操作系统重启后,则将计数器置0,结束所有锁定,并且将文件锁定状态同步到远端服务器。这样的操作使得在系统崩溃或者用户忘记关闭文件时,自动解锁文件,避免造成损失。
在另一个实施例中,所述主动方法进一步包括,状态检测装置接收到文件系统级别的写入事件,则进一步检测该文件是否被对应进程锁定,如果没有锁定,则需要补充执行锁定操作。这样的操作避免了由于操作系统事件过多导致的无法及时捕获事件的问题。
上述方法中的进程打开文件事件也可以替换为当用户通过鼠标点击或者键盘操作打开文件事件。
在另一个实施例中,所述主动方法进一步包括,即使状态检测装置接收到进程调用close()函数的事件,并不立即解除文件锁定,而是收集文件过去写入和关闭操作之间的时间间隔,通过与预设值的比较判断文件是否可能再次写入。如果该时间间隔小于预设值,那么判断该文件仍然可能写入,保持文件的锁定状态直到超时或者进程退出。如果该时间间隔大于预设值,那么判断该文件不再写入,判定文件为解锁状态。
在一个实施例中,所述的被动方法是指当文件发生修改后,扫描文件系统内的所有文件打开句柄,判断是否有其他进程打开该文件,如果有,则判定该文件为锁定状态直到全部进程结束;如果没有,则判定该文件为锁定状态直到该进程结束。
另外,inode(索引节点)在文件系统中包含了有关文件的大部分信息,其中就有打开文件的引用计数来表示有多少进程打开该文件。在另一个实施例中,所述的被动方法是指当文件发生修改后,判断当前该文件在文件系统内部表示inode上的打开引用计数,以判断是否有其他进程打开该文件,一直锁定该文件直到inode引用计数变成0。
在另一个实施例中,所述的被动方法是指当文件发生修改后,尝试对文件进行操作系统提供的进程间文件锁定机制。如果不能获得该锁定,那么定时轮询,保持该锁定状态直到该进程间文件锁可以获得。
图6表示的是本发明所述方法的一个具体实施例的流程图。在该实施例中,用户通过进程打开了一个文件进行编辑。在本实施例中,检测装置采用主动方法进行检测。在步骤601中,状态检测装置被启动,随时准备接收系统事件。在步骤602中,相关进程打开文件。在步骤603中,状态检测装置接收到进程打开文件的事件。在步骤604中,计数器加1,其中计数器在每一个用户设备内。在步骤605中,状态检测装置检查设备文件系统API中的open操作调用记录。在步骤606中,状态检测装置判断获取的记录中是否包含写权限。如果包含写权限,则判定用户开始编辑,并且判定文件的锁定状态为锁定,将锁定状态同步到远端服务器,继续到步骤607。在步骤607中,远端服务器将该文件的锁定状态同步到各个用户的设备上,其他用户的设备上的状态同步装置更新本地文件的读写权限,排除写权限,从而将文件锁定。如果不包含写权限,则用户不能更改文件内容,无需设置锁定状态。在步骤608中,用户结束了编辑,进程调用close()函数退出。在步骤609中,计数器减1。在步骤610中,状态检测装置检测计数器是否为0,如果为0,则判定文件解锁,将文件锁定状态同步到远端服务器,继续到步骤611,若计数器不为0,则维持文件的锁定状态。在步骤611中,远端服务器将文件锁定状态同步到其他用户的设备上,其他用户设备上的状态同步装置更新本地文件的读写权限,允许写权限,从而将文件解锁。
在上述步骤607中,远端服务器将文件的锁定状态同步到各个用户的设备上,其他用户的设备上的状态同步装置也可以更新本地文件的强制锁状态,利用文件系统提供的强制锁强制锁定文件,从而将文件锁定。在上述步骤611中,远端服务器将文件锁定状态同步到其他用户的设备上,其他用户设备上的状态同步装置也可以更新本地文件的强制锁状态,利用文件系统中的强制锁强制解锁文件,从而将文件锁定。
图7表示的是本发明所述方法的另一个具体实施例的流程图。在本实施例中,用户通过软件界面打开文件,检测方法采用主动方法。在步骤701中,状态检测装置被启动,随时准备接收系统事件。在步骤702中,用户通过软件界面用鼠标点击打开一个文件。在步骤703中,状态检测装置接收到用户打开文件的事件。在步骤704中,计数器加1。在步骤705中,状态检测装置检查设备文件系统API中的open操作调用记录。在步骤706中,状态检测装置判断获取的记录中是否包含写权限。如果包含写权限,则判断用户即将开始编辑,判定文件的锁定状态为锁定,将锁定状态同步到远端服务器,继续到步骤707。在步骤707中,远端服务器将该文件的锁定状态同步到各个用户的设备上,其他用户的设备上的状态同步装置更新本地文件的读写权限,排除写权限,从而将文件锁定。如果不包含写权限,则用户不能更改文件内容,无需设置锁定状态。-在步骤708中,用户结束了编辑,进程调用close()函数退出。在步骤709中,计数器-1。在步骤710中,状态检测装置检测计数器是否为0,如果为0,则判定文件解锁,将文件锁定状态同步到远端服务器,继续到步骤711,若计数器不为0,则维持文件的锁定状态。在步骤711中,远端服务器将文件锁定状态同步到其他用户的设备上,其他用户设备上的状态同步装置更新本地文件的读写权限,允许写权限,从而将文件解锁。
在上述步骤707中,远端服务器将文件的锁定状态同步到各个用户的设备上,其他用户的设备上的状态同步装置也可以更新本地文件的强制锁状态,利用文件系统提供的强制锁强制锁定文件,从而将文件锁定。在上述步骤711中,远端服务器将文件锁定状态同步到其他用户的设备上,其他用户设备上的状态同步装置也可以更新本地文件的强制锁状态,利用文件系统中的强制锁强制解锁文件,从而将文件锁定。
图8表示的是本发明所述方法的另一个具体实施例的流程图。在本实施例中,用户通过进程打开了一个文件进行编辑,检测方法采用主动方法。在步骤801中,状态检测装置被启动,随时准备接收系统事件。在步骤802中,用户通过进程打开一个文件。在步骤803中,状态检测装置接收到进程打开文件的事件。在步骤804中,计数器加1。在步骤805中,状态检测装置检查设备文件系统API中的open操作调用记录。在步骤806中,状态检测装置判断获取的记录中是否包含写权限。如果包含写权限,则判定用户即将开始编辑,并判定文件的锁定状态为锁定,将锁定状态同步到远端服务器,继续到步骤807。在步骤807中,远端服务器将该文件的锁定状态同步到各个用户的设备上,其他用户的设备上的状态同步装置更新本地文件的读写权限,排除写权限,从而将文件锁定。如果不包含写权限,则用户不会更改文件内容,无需设置锁定状态。在步骤808中,用户结束了编辑,进程调用close()函数退出。在步骤809中,计数器减1。在步骤810中,状态检测装置检测计数器是否为0,如果为0,则判定文件解锁,将文件锁定状态同步到远端服务器,继续到步骤811,若计数器不为0,则维持文件的锁定状态。在步骤811中,远端服务器将文件锁定状态同步到其他用户的设备上,其他用户设备上的状态同步装置更新本地文件的读写权限,允许写权限,从而将文件解锁。此外,额外增加步骤812,在步骤812中,状态检测装置还用于捕获文件系统级别的写入事件,包括但不限于file sync write、mmap write、async write等。当状态检测装置捕获上述文件系统级别的写入事件,则继续到步骤813。在步骤813中,检测该文件是否被对应进程锁定。如果未锁定,则步骤814中,计数器加1,继续到步骤815。在步骤815中,判定为文件的锁定状态为锁定,将锁定状态同步到远端服务器,继续到步骤807。如果已经锁定,则直接继续到步骤807。这样做的好处在于,避免了由于系统事件过多而导致的无法及时捕获的问题。
在上述步骤807中,远端服务器将文件的锁定状态同步到各个用户的设备上,其他用户的设备上的状态同步装置也可以更新本地文件的强制锁状态,利用文件系统提供的强制锁强制锁定文件,从而将文件锁定。在上述步骤811中,远端服务器将文件锁定状态同步到其他用户的设备上,其他用户设备上的状态同步装置也可以更新本地文件的强制锁状态,利用文件系统中的强制锁强制解锁文件,从而将文件锁定。
图9表示的是本发明所述方法的另一个具体实施例的流程图。在本实施例中,用户通过进程打开了一个文件进行编辑,检测方法采用主动方法。在步骤901中,状态检测装置被启动,随时准备接收系统事件。在步骤902中,用户通过进程打开了一个文件。在步骤903中,状态检测装置接收到进程打开文件的事件。在步骤904中,计数器加1。在步骤905中,状态检测装置检查设备文件系统API中的open操作调用记录。在步骤906中,状态检测装置判断获取的记录中是否包含写权限。如果包含写权限,则判定用户即将开始编辑,并判定文件的锁定状态为锁定,将锁定状态同步到远端服务器,继续到步骤907。在步骤907中,远端服务器将该文件的锁定状态同步到各个用户的设备上,其他用户的设备上的状态同步装置更新本地文件的读写权限,排除写权限,从而将文件锁定。如果不包含写权限,则用户不能更改文件内容,无需设置锁定状态。在步骤908中,用户结束了编辑,进程调用close()函数退出。进程并不立即判定该文件解锁,而是继续到步骤9081。在步骤9081中,状态检测装置收集文件历史上的关闭与再写入之间的时间间隔。继续到步骤9082,判断文件是否可能再次写入。这里取预设值3分钟作为判断基准,如果文件历史上的关闭与再写入之间的时间间隔小于3分钟,则判定文件仍然可能写入,保持文件的锁定状态直到超出3分钟或者进程退出,再继续到步骤909。如果文件历史上的关闭与再写入之间的时间间隔小于3分钟,则直接继续到步骤909。在步骤909中,计数器减1。在步骤910中,状态检测装置检测计数器是否为0,如果为0,则判定文件解锁,将文件锁定状态同步到远端服务器,继续到步骤911,若计数器不为0,则维持文件的锁定状态。在步骤911中,远端服务器将文件锁定状态同步到其他用户的设备上,其他用户设备上的状态同步装置更新本地文件的读写权限,允许写权限,从而将文件解锁。本实施例中的判断基准3分钟也可以由本领域普通技术人员取为其他值。本实施例这样设置的好处在于方便了在频繁修改文件的情况下用户的操作,避免频繁的锁定和解锁文件。
在上述步骤907中,远端服务器将文件的锁定状态同步到各个用户的设备上,其他用户的设备上的状态同步装置也可以更新本地文件的强制锁状态,利用文件系统提供的强制锁强制锁定文件,从而将文件锁定。在上述步骤911中,远端服务器将文件锁定状态同步到其他用户的设备上,其他用户设备上的状态同步装置也可以更新本地文件的强制锁状态,利用文件系统中的强制锁强制解锁文件,从而将文件锁定。
图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。
图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。
系统间文件锁定机制是一些系统,例如Unix、Linux等,自带的文件锁定机制,在这种机制中,当一个程序正在对文件进行写操作时,文件就会进入一个暂时状态,在这个状态下,如果另外一个程序尝试读这个文件,就会停下来等待这个状态的结束。图12表示的是本发明所述方法的另一个具体实施例的流程图。在本实施例中,用户通过进程打开了一个文件进行编辑,检测方法采用被动方法,利用了进程间文件锁定机制。在步骤1201中,状态检测装置被启动,随时准备接收系统事件。在步骤1202中,用户通过进程打开一个文件,进行编辑,文件发生变化。在步骤1203中,状态检测装置接收到文件发生变化的事件。在步骤1204中,状态检测装置尝试对文件进行操作系统提供的进程间文件锁定机制。在步骤1205中,判断是否可以获得该文件锁,如果不能够获得,则保持文件的锁定状态,并且定时轮询,即定时对文件尝试进行操作系统提供的进程间文件锁定机制;如果能够获得该文件锁,那么对该文件应用该文件锁。
说明书中所列的具体实施例是为了展示并且使公众能够更好地理解本发明的内容。应当注意,本领域的普通技术人员能够在不背离本发明的主要精神以及范围的前提下对于本发明做出并实现多种的修改的技术方案。例如,所采用的系统事件可以是除了进程打开、鼠标打开等事件以外的修改编辑文件的事件,也可以采用其他方法检测是否有多个进程打开文件等。因此在本说明书中所列的具体实施例不应当被理解为对于本发明的限制。
Claims (10)
1.一种文件锁定方法,其特征在于包括以下步骤:
步骤1:当前用户设备根据系统事件判定文件锁定状态;
步骤2:当前用户设备将所述文件锁定状态同步到远端服务器;
步骤3:所述远端服务器将所述文件锁定状态同步到其他各个用户设备;
步骤4:其他各个用户设备根据获得的所述文件锁定状态,更新本地文件信息。
2.如权利要求1所述的文件锁定方法,其特征在于,所述系统事件是进程打开文件事件、进程结束事件、用户通过鼠标点击打开文件事件或关闭文件事件。
3.如权利要求1所述的文件锁定方法,其特征在于,所述步骤1中根据系统事件判定文件锁定状态包括,当所述系统事件是文件被进程打开或者编辑的事件,那么就判定所述文件进入锁定状态;当所述事件是文件被关闭或者进程结束的事件,则判定所述文件进入解锁状态。
4.如权利要求3所述的文件锁定方法,其特征在于,所述根据系统事件判定文件锁定状态进一步包括,当所述系统事件是文件被关闭或者进程结束的事件时,进一步检测是否有其他进程打开该文件,如果没有其他进程打开该文件,则判定该文件进入解锁状态,如果仍然有其他进程打开编辑该文件,那么所述状态检测装置仍然判定该文件为锁定状态,直到打开编辑文件的进程数量为0,才判定该文件进入解锁状态。
5.如权利要求1所述的文件锁定方法,其特征在于,所述步骤1中根据系统事件判定文件锁定状态包括,检查系统应用程序接口中的open操作调用记录,如果该记录的操作中包含写权限,那么判定文件进入锁定状态。
6.如权利要求1所述的文件锁定方法,其特征在于,所述步骤1中根据系统事件判断文件锁定状态包括,当所述系统事件是文件系统级别的写入事件,那么检测该文件是否被对应进程锁定,如果没有锁定,则补充执行锁定操作。
7.如权利要求1所述的文件锁定方法,其特征在于,所述步骤1中根据系统事件判断文件锁定状态包括,当所述系统事件是文件修改事件,扫描文件系统内的所有文件打开句柄,判断是否有其他进程打开该文件,如果没有其他进程打开该文件,那么判定该文件锁定直到本进程结束,或者判断当前该文件在索引节点上的打开引用计数,判定该文件锁定直到索引节点的打开引用计数为0,或者尝试对文件进行操作系统提供的进程间文件锁定机制,如果不能获得该文件锁,那么定时轮询,保持该锁定状态直到该进程间文件锁能够获得。
8.如权利要求1-7中任一项所述的文件锁定方法,其特征在于,所述步骤1中根据系统事件判断文件锁定状态包括,当所述系统事件是系统重启事件时,解除所有锁定操作,并且将文件锁定状态同步到所述远端服务器。
9.如权利要求1-7中任一项所述的文件锁定方法,其特征在于,所述更新本地文件信息是指更新本地文件的读写权限或者更新本地文件的强制锁状态。
10.一种文件锁定系统,其特征在于,包括:
远端服务器,连接各个用户设备,用于在用户设备间同步文件锁定状态;
状态检测装置,设置在每一个用户设备端,用于检测文件的锁定状态的变化,判断文件的锁定状态;
状态同步装置,设置在每一个用户设备端,用于接收来自状态检测装置的文件锁定状态以将文件锁定状态同步到远端服务器,以及用于从远端服务器同步来自其他用户设备的文件锁定状态,更新本地文件信息;
其中,所述远端服务器与所述状态同步装置通信相连,在每一个用户设备内,所述状态检测装置与所述状态同步装置连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410085383.7A CN103795813B (zh) | 2014-03-10 | 2014-03-10 | 文件锁定、解锁方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410085383.7A CN103795813B (zh) | 2014-03-10 | 2014-03-10 | 文件锁定、解锁方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103795813A true CN103795813A (zh) | 2014-05-14 |
CN103795813B CN103795813B (zh) | 2021-05-07 |
Family
ID=50671080
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410085383.7A Active CN103795813B (zh) | 2014-03-10 | 2014-03-10 | 文件锁定、解锁方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103795813B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104077084A (zh) * | 2014-07-22 | 2014-10-01 | 中国科学院上海微系统与信息技术研究所 | 分布式随机访问文件系统及其访问控制方法 |
CN105468769A (zh) * | 2015-12-08 | 2016-04-06 | 国网浙江省电力公司宁波供电公司 | 电力通信地理信息的编辑方法及系统 |
CN105979018A (zh) * | 2016-07-29 | 2016-09-28 | 上海爱数信息技术股份有限公司 | 一种文件锁的状态维护方法及系统 |
CN106559282A (zh) * | 2015-09-29 | 2017-04-05 | 中兴通讯股份有限公司 | 一种锁定文件管理方法和装置 |
CN108241693A (zh) * | 2016-12-26 | 2018-07-03 | 北京国双科技有限公司 | 同步数据的方法和装置 |
CN111862779A (zh) * | 2020-07-28 | 2020-10-30 | 南京赛飞地理信息技术有限公司 | 一种基于互联网共享的地理信息数字测图方法 |
CN112131533A (zh) * | 2020-08-27 | 2020-12-25 | 北京云动智效网络科技有限公司 | 一种文档保护方法及系统 |
CN113467960A (zh) * | 2021-05-28 | 2021-10-01 | 济南浪潮数据技术有限公司 | 基于共享锁的多路径存储方法、系统、终端及存储介质 |
WO2022184004A1 (zh) * | 2021-03-01 | 2022-09-09 | 北京字跳网络技术有限公司 | 一种文档处理方法、装置、设备和介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1979466A (zh) * | 2005-11-29 | 2007-06-13 | 国际商业机器公司 | 允许多个用户同时编辑一个共享的电子文档的方法及装置 |
CN102236700A (zh) * | 2010-05-04 | 2011-11-09 | 微软公司 | 分布式文件系统复制环境中的乐观锁定 |
CN102262559A (zh) * | 2010-05-24 | 2011-11-30 | 腾讯科技(深圳)有限公司 | 一种资源共享的方法及系统 |
CN102955785A (zh) * | 2011-08-22 | 2013-03-06 | 北大方正集团有限公司 | 一种文档的网络编辑方法及系统 |
CN103544189A (zh) * | 2012-07-17 | 2014-01-29 | 珠海金山办公软件有限公司 | 锁定正在编辑文件的方法及系统 |
-
2014
- 2014-03-10 CN CN201410085383.7A patent/CN103795813B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1979466A (zh) * | 2005-11-29 | 2007-06-13 | 国际商业机器公司 | 允许多个用户同时编辑一个共享的电子文档的方法及装置 |
CN102236700A (zh) * | 2010-05-04 | 2011-11-09 | 微软公司 | 分布式文件系统复制环境中的乐观锁定 |
CN102262559A (zh) * | 2010-05-24 | 2011-11-30 | 腾讯科技(深圳)有限公司 | 一种资源共享的方法及系统 |
CN102955785A (zh) * | 2011-08-22 | 2013-03-06 | 北大方正集团有限公司 | 一种文档的网络编辑方法及系统 |
CN103544189A (zh) * | 2012-07-17 | 2014-01-29 | 珠海金山办公软件有限公司 | 锁定正在编辑文件的方法及系统 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104077084A (zh) * | 2014-07-22 | 2014-10-01 | 中国科学院上海微系统与信息技术研究所 | 分布式随机访问文件系统及其访问控制方法 |
CN104077084B (zh) * | 2014-07-22 | 2017-07-21 | 中国科学院上海微系统与信息技术研究所 | 分布式随机访问文件系统及其访问控制方法 |
CN106559282A (zh) * | 2015-09-29 | 2017-04-05 | 中兴通讯股份有限公司 | 一种锁定文件管理方法和装置 |
WO2017054734A1 (zh) * | 2015-09-29 | 2017-04-06 | 中兴通讯股份有限公司 | 一种锁定文件管理方法和装置 |
CN105468769A (zh) * | 2015-12-08 | 2016-04-06 | 国网浙江省电力公司宁波供电公司 | 电力通信地理信息的编辑方法及系统 |
CN105979018A (zh) * | 2016-07-29 | 2016-09-28 | 上海爱数信息技术股份有限公司 | 一种文件锁的状态维护方法及系统 |
CN108241693A (zh) * | 2016-12-26 | 2018-07-03 | 北京国双科技有限公司 | 同步数据的方法和装置 |
CN108241693B (zh) * | 2016-12-26 | 2020-10-27 | 北京国双科技有限公司 | 同步数据的方法和装置 |
CN111862779A (zh) * | 2020-07-28 | 2020-10-30 | 南京赛飞地理信息技术有限公司 | 一种基于互联网共享的地理信息数字测图方法 |
CN112131533A (zh) * | 2020-08-27 | 2020-12-25 | 北京云动智效网络科技有限公司 | 一种文档保护方法及系统 |
WO2022184004A1 (zh) * | 2021-03-01 | 2022-09-09 | 北京字跳网络技术有限公司 | 一种文档处理方法、装置、设备和介质 |
CN113467960A (zh) * | 2021-05-28 | 2021-10-01 | 济南浪潮数据技术有限公司 | 基于共享锁的多路径存储方法、系统、终端及存储介质 |
CN113467960B (zh) * | 2021-05-28 | 2024-02-27 | 济南浪潮数据技术有限公司 | 基于共享锁的多路径存储方法、系统、终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103795813B (zh) | 2021-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103795813A (zh) | 文件锁定、解锁方法及系统 | |
US8290997B2 (en) | File handling for naming conflicts | |
CN101520831B (zh) | 安全终端系统及终端安全方法 | |
CN102360410B (zh) | 一种文件系统的用户操作发现方法和装置 | |
US20170308565A1 (en) | Locking concurrent commands in a database management system | |
CN104217151A (zh) | 智能终端应用程序的加锁方法及智能终端 | |
CN106462179A (zh) | 便携式计算设备访问 | |
CN106991304A (zh) | 消息的处理方法及装置 | |
CN102651006A (zh) | 一种数据库表单记录加锁方法和装置 | |
CN106503551A (zh) | 一种针对勒索软件的处理方法和系统 | |
WO2014082399A1 (zh) | 移动终端管理方法和系统 | |
CN104216723A (zh) | 软件启动方法及移动设备 | |
CN110032424A (zh) | 分布式锁的实现方法和装置 | |
CN105528264A (zh) | 防误操作的数据恢复方法及其系统 | |
US20170185505A1 (en) | Systems and methods for implementing an automated parallel deployment solution | |
CN103377056A (zh) | 一种程序执行方法及移动终端 | |
CN109086065A (zh) | 一种软件升级方法、系统及终端设备 | |
CN107766131B (zh) | 任务调度方法和装置 | |
JP2010049647A (ja) | クライアントサーバシステム、クライアントコンピュータ、サーバ、ファイル管理方法及びそのプログラム | |
CN108287986B (zh) | 一种权限瞬时授予与收回方法及装置 | |
CN102651036A (zh) | 通用、可靠的文件复制操作识别方法 | |
CN103841120A (zh) | 基于数字水印的数据安全管理方法、移动终端和系统 | |
CN109656740A (zh) | 一种支持超时处理任务流的方法 | |
KR101483107B1 (ko) | 소프트웨어 관리 방법 및 이를 구현한 시스템 | |
CN107943613A (zh) | 数据备份方法及系统、数据恢复方法及系统和usb终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |