我有办法告诉某个特定文件是否在另一个应用程序中打开了吗?
我想在我的应用程序中打开文件之前提供一个功能,我想知道该文件是否已经打开。
我想将其已经在另一个应用程序中打开的功能放在我的应用程序中,然后我的应用程序限制该文件再次打开它以保存信息丢失。
提前感谢...
答案 0 :(得分:0)
此类任务存在文件锁定:
答案 1 :(得分:0)
在Linux上,您可以使用“lsof”查看文件是否已打开。
答案 2 :(得分:0)
您现在必须已经实施了一些解决方案,但是,我理解您的设计的方式,我建议您反对它。
您应该允许用户打开文件并检查时间戳,以便在允许用户保存文件之前查明其是否已被修改(可能会询问用户是否覆盖文件或将其另存为新文件等。 )。
查看stat() API。
- 在打开文件之前记下时间戳(st_mtime
,请参阅下面的结构)
- 让用户修改文件。
- 在用户保存文件之前,再次检查文件的时间戳st_mtime
,如果不同,则向用户提问。
struct stat {
dev_t st_dev; /* ID of device containing file */
ino_t st_ino; /* inode number */
mode_t st_mode; /* protection */
nlink_t st_nlink; /* number of hard links */
uid_t st_uid; /* user ID of owner */
gid_t st_gid; /* group ID of owner */
dev_t st_rdev; /* device ID (if special file) */
off_t st_size; /* total size, in bytes */
blksize_t st_blksize; /* blocksize for file system I/O */
blkcnt_t st_blocks; /* number of 512B blocks allocated */
time_t st_atime; /* time of last access */
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last status change */
};