监视目录中的新文件。比使用`dirent`函数更快的方法吗?

时间:2019-04-18 07:05:20

标签: c centos7 dirent.h

我正在构建一个应用程序,该应用程序必须检查目录中是否有新文件,然后针对每个新文件启动一个新进程来处理该文件(此后删除该文件)。 >

基本上,程序减少到以下内容:

while(1) {
    DIR * directory = opendir("/example"); 
    struct dirent * directory_data;
    if(directory) {
       while((directory_data = readdir(directory)) != NULL) {
          if(directory_data->d_type == DT_REG) {
              // Checking if that file is new and was not already manipulated, by a previous loop (stored the last loop list of files in a char array)
              execute_manipulator(directory_data->d_name);
           }
        }
    }
    // With some error checking
    closedir(directory);
    usleep(300000); // 0.3 secs
}

问题与速度有关。是否有比使用dirent的{​​{1}}和opendir更快的方法来检查目录中的新文件?我注意到,在3-4秒时,程序的CPU使用率大约为1%(我希望使其速度更快,如果可能的话,几乎不会引起注意)。

注意: 我还习惯于将前一个循环文件​​列表存储在readdir数组中,而不是存储最后一个较高的{{1} },然后使用char来检查文件是否是新文件,因为使用RAM应该更快。

谢谢!

0 个答案:

没有答案