当前位置:  技术问答>linux和unix

opendir,readdir 的问题

    来源: 互联网  发布时间:2016-06-16

    本文导语:  假设我扫描的目录为 $DATAPATH,这个目录下会有个文件file1,每当我readdir得到的结果为file1时我就处理该文件。 但是,file1是别的程序从其他的地方拷贝过来,文件很大,readdir得到的文件会不完整, 如何避免这个问题...

假设我扫描的目录为 $DATAPATH,这个目录下会有个文件file1,每当我readdir得到的结果为file1时我就处理该文件。
但是,file1是别的程序从其他的地方拷贝过来,文件很大,readdir得到的文件会不完整,
如何避免这个问题?


|


我又没让你去比较checksum
只是对一个存在的文件进行cksum操作
如果文件还未完全拷贝完/或者说资源正忙碌,其是无法得到checksum的

|
你的问题实际上就是想知道其他程序何时完成文件copy

当你readdir到文件file1时,可以对其进行改名操作/rm,或者计算checksum/cksum等操作
如果成功则说明文件已经完成,之后就可以对其进行操作了

|
简单的说,只有复制这个文件的进程知道复制是否成功,所以所有的手脚都应该由复制这个文件的进程去做:

1、使用临时文件名,当复制完成,经过校验之后,再改名为目标文件名(如用 ~copy_file_XXX.tmp 等名字)
2、复制文件之前先复制一个同名.MD5SUM 的文件,写上源文件的 MD5 checksum 值;这样利用文件的进程可以自己做检查。
3、等等,扩展性思维吧。

|
如果确保复制文件的进程不会中途失败,可以 lsof /file 检查是否有进程正在写入这个文件。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何判断路径是否存在?stat?opendir?
  • 请问unix 对应dos findfirst的函数是opendir吗?
  • 这样用opendir()怎么不行啊?指点捡分
  • linux下opendir和scandir函数为什么只能打开当前目录呢?
  • opendir函数后没有closedir(dir),次数多了以后会不会对调用system函数有影响啊
  • 关于opendir函数的返回类型DIR


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3