本发明涉及一种打开文件的保护方法,尤其涉及一种在国产linux操作系统下保护打开文件的方法。
背景技术:
1、在现有的国产操作系统中,如麒麟,统信等国产linux操作系统中,当用户正在使用office或者pdf软件编写一份文档/图表的时候,经常会遇到这样的情况,正在编写的文件一不小心在使用文件管理器时,删除了该文件或者该文件所在的目录,又或者是将该文件或者文件所在的目录移动到了其他地方而找不到了,为了防止这种情况的发生,本发明提供了一种在国产操作系统下,保护已经被打开的office类/pdf类文件的方法。
2、对于目前市场上,也存在着一些保护打开文件的方法,比如一些office的厂商会定时备份打开的office文件,还有一些服务器硬件厂商,会通过增加驱动模块,修改文件系统的接口等操作来实现该功能,
3、由于现在的国产linux操作系统的文件管理器本身并不具备保护已打开的office/pdf类文件的功能,而现有的保护打开文件的技术有如下缺点:
4、1.大多数office厂商提供的保护打开文件的技术有如下缺点:只有使用他们自己的office软件时才有用,没有通用性,并不是所有的office软件都有该功能,而且也不能保护pdf等其他类别文件。
5、2.大多数服务器硬件针对打开文件的保护方法,一般是需要额外的内核模块,并且硬盘和内核文件系统需要实现特殊接口,不具备通用性,并且一般针对的是服务器硬件,桌面操作系统大多数将不具备该功能。
技术实现思路
1、针对上述问题,本发明提供一种在国产linux操作系统下保护打开文件的方法,在其处理剪切,删除,放入回收站等函数中加入保护文件的功能模块,当用户打开了该文件的情况下,通过文件管理器对该文件或文件所属于的目录执行了删除或者剪切的行为时,就会触发该功能模块。利用linux下文件锁的机制,来判断该文件是否处于打开状态,从而实现保护打开文件的功能。
2、为实现上述目的,本发明公开了一种在国产linux操作系统下保护打开文件的方法,包括以下步骤:
3、步骤s1、在文件管理器的关于文件删除或放入回收站的函数和剪切文件功能模块的函数中加入新增功能函数protect_file(),其以钩子函数的方式内嵌在文件管理区中,在protect_file()函数中,首先调用标准库函数stat获取被操作的文件信息,然后通过s_isdir()函数判断传入的文件句柄是否为目录,若是,则进行步骤s2,若否则进行步骤s3;
4、步骤s2、通过opendir()函数打开该目录的句柄,并通过readdir()函数依次读取该目录下所有内容,直到为null为止,然后将读出的文件句柄递归调用函数protect_file(),完成后进行步骤s4;
5、步骤s3、通过函数s_isblk()函数判断文件句柄是否为块设备文件,通过s_ischr()函数判断是否为字符设备文件,若是这两类文件的任意一类,则不处理;
6、步骤s4、在protect_file()函数中调用函数s_isreg()判断被操作文件是否为常规文件,如果是常规文件,则通过标准库函数stat获取的statbuf变量的子成员statbuf.st_uid,并通过statbuf.st_uid获取该文件所属于的用户id,通过getuid()函数来获取当前系统的登录用户id,然后判断两者是否一致,若一致,则进行步骤s5;
7、步骤s5、在protect_file()函数中调用标准库函数fcntl(),通过设置f_wrlck的标志位来获取该文件写锁,如果为存在写锁,则通过gtk提供的标准库函数弹出没有权限的提示框,并取消掉当次操作,否则继续执行该次操作。
8、本发明的一种在国产linux操作系统下保护打开文件的方法的有益效果为:部署了本发明方案之后,在用户通过系统文件管理对文件或者目录进行删除,剪切,删除到回收站等操作时,如果该文件或者该目录中所包含的文件有正处于打开编辑状态的话,系统则会弹出警告提示框来告知当前用户,并终止该次操作,从而达到保护打开的文件避免被误操作删除等行为。
1.一种在国产linux操作系统下保护打开文件的方法,其特征在于,包括以下步骤: