急!急!急 文件打开问题

linux_6 2012-08-02 05:27:40
请问如何用程序判断一个文件当前是否被其它的应用程序打开着呢? 是这样的,现在有一个目录,目录里面存放着一个文件,我需要检测一下这个文件当前是否正在被其它的程序使用,如果没有被其它的程序使用,就将该文件加密后移动到另外一个地方,然后将该文件所在的目录删除。
这个问题折腾了我好几天了,现在还是无解。哪位高手能够指点一下呢?
...全文
121 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
夏天__ 2012-08-03
  • 打赏
  • 举报
回复

用_access函数判断,再次打开时的情况要看你第一次的打开方式了,如果上次用的是非独占打开,那没问题,如果是独占打开,会打开失败

Example

/* ACCESS.C: This example uses _access to check the
* file named "ACCESS.C" to see if it exists and if
* writing is allowed.
*/

#include <io.h>
#include <stdio.h>
#include <stdlib.h>

void main( void )
{
/* Check for existence */
if( (_access( "ACCESS.C", 0 )) != -1 )
{
printf( "File ACCESS.C exists\n" );
/* Check for write permission */
if( (_access( "ACCESS.C", 2 )) != -1 )
printf( "File ACCESS.C has write permission\n" );
}
}


你也参考VIm打开文件的源码,vim打开文件时,如果此文件已经有别的程序打开,就会显示警告信息。
恨天低 2012-08-03
  • 打赏
  • 举报
回复
通过读文件的属性应该是判断不了的。

你可以在一个文件中记录一下该文件的使用情况,每次rw该文件都实时更新下使用情况。
linux_6 2012-08-03
  • 打赏
  • 举报
回复
linux_6 2012-08-03
  • 打赏
  • 举报
回复
没有人帮忙了吗?
linux_6 2012-08-03
  • 打赏
  • 举报
回复
linux_6 2012-08-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

C/C++ code

用_access函数判断,再次打开时的情况要看你第一次的打开方式了,如果上次用的是非独占打开,那没问题,如果是独占打开,会打开失败

Example

/* ACCESS.C: This example uses _access to check the
* file named "ACCESS.C" to see if it exists and if
* wri……
[/Quote]

VIm打开文件能够显示警告信息,它不是通过判断文件是否被其它程序打开,而是用vim打开文件时会产生一个备份文件,vim也是通过检测备份文件才提示的。
linux_6 2012-08-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

用命令lsof判断看看。
[/Quote]
lsof不行, 用一些软件比如gedit什么的打开,显示不出来
Linux-Torvalds 2012-08-02
  • 打赏
  • 举报
回复
用命令lsof判断看看。
最近有人说下不了,我看了一下,能下载,多尝试几次~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 找来一个很有用的声卡驱动解决方案,是我尝试了n次(不下20)还搭上某人的辛苦劳动,才成功让我的Win7发出声音的!!!以下是引用本站“实话实说”的博客。。。 你看到这篇文章时候估计你快被windows7无法安装声卡驱动而崩溃了,呵呵,别,这篇文章是你的救星,本人已经试验多台电脑,完美解决windows7声卡驱动安装失败这一问题 有个前提,你已经有适合自己机子声卡驱动就是总是安装失败,若没有声卡驱动可以用驱动人生(或者其他驱动检测设备)检测并下载适合自己的驱动以备下一步使用。 闲话少说,正文: 1.先下载解压 windows7声卡驱动修复 压缩包。 2.打开你系统的所在盘进入Windows-system32-Driverstore-FileRepository在里面找到wdmaudio.inf_x86_neutral_aed2a4456700dfde文件夹. 一个一个慢慢找吧别着. 4.再进入(wdmaudio.inf_x86_neutral_aed2a4456700dfde)文件夹把里面的东西全删了(删不掉,因为需要管理员权限 ,用windows7 优化大师 -->系统设置--->又键设置--->获取管理员权限(文件\文件夹)--应用到系统,然后对删不掉的文件点右键 --获取管理员权限---删除) 5.回到你刚刚解压的文件夹 6.把里面文件全部复制粘贴到wdmaudio.inf……文件夹里面 7.重新安装声卡驱动. 8.重启ok 问题解决了 如果没有WIN7驱动程序,用vista的也可以

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧