我正在构建一个应用程序,该应用程序必须检查目录中是否有新文件,然后针对每个新文件启动一个新进程来处理该文件(此后删除该文件)。 >
基本上,程序减少到以下内容:
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应该更快。
谢谢!