程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了仅监视目录中的新文件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决仅监视目录中的新文件?

开发过程中遇到仅监视目录中的新文件的问题如何解决?下面主要结合日常开发的经验,给出你关于仅监视目录中的新文件的解决方法建议,希望对你解决仅监视目录中的新文件有所启发或帮助;

解决方案是将最后访问时间存储在全局变量中,并使用过滤器选择最新文件scandir()

int cmp_mtime( const struct dirent** lentry, const struct dirent** rentry )

  1. 统计信息(*lentry)->d_name(由路径扩展,但这仅是详细信息)
  2. ltime = statbuf.st_mtime;
  3. 统计信息(*rentry)->d_name(由路径扩展,但这仅是详细信息)
  4. rtime = statbuf.st_mtime;
  5. if ( ltime < rtime ) return -1;
  6. else if ( ltime > rtime ) return 1;
  7. return 0;

int selector( const struct dirent* entry )

  1. 统计信息entry->d_name(由路径扩展,但这仅是详细信息)
  2. 如果不是正常文件则返回0
  3. 如果stat.st_mtime > lastseen然后返回1,否则返回0

主要:

  1. 初始化全局时间变量 lastseen
  2. scandir( directory, &entrIEs, selector, cmp_mtime );
  3. 处理条目列表
  4. lastseen:= m列表中最后一个条目的时间

解决方法

我想在目录中监视来自C应用程序的新文件。但是,我对修改后的文件不感兴趣,仅对新文件感兴趣。目前,我为此目的使用readdir / stat:

while ( (ent = readdir(dir)) != NULL ) {
  strcpy(path,mon_dir);
  strcat(path,"/");
  strcat(path,ent->d_name);
  if ( stat(path,&statbuf) == -1 ) {
    printf( "Can't stat %s\n",ent->d_name );
    continue;
  }
  if ( S_ISREG(statbuf.st_mode) ) {
    if ( statbuf.st_mtime > *timestamp ) {
      tcomp = localtime( &statbuf.st_mtime );
      strftime( s_date,sizeof(s_date),"%Y%m%d %H:%M:%S",tcomp );
      printf( "%s %s was added\n",s_date,ent->d_name );
      *timestamp = statbuf.st_mtime;
    }
  }
}

知道如何在不保留文件列表的情况下检测 Linux和Solaris 10 上新创建的文件吗?

大佬总结

以上是大佬教程为你收集整理的仅监视目录中的新文件全部内容,希望文章能够帮你解决仅监视目录中的新文件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: