我的问题是我使用 inotify 来查看多个目录,并使用 read() 函数来读取任何更改。我的观点是我不能在“同一时间”(“for”循环)中观看所有这些目录,因为 read() 函数会停止程序,直到当前观看的目录发生某些事情。
有简化的“主要”代码:
while (1){
for(int i = 0; i < numberOfDirectories; i++){
string fileEnd = get_event(fd[i], catalogs[i]).c_str());
if(string != "") do some code;
}
sleep(1);
}
其中 get_event 返回更改文件的路径,fd[i] 是 inotify 的实例,catalogs[i] 包含监视目录的名称。
还有一些get_even func的代码:
#define BUFF_SIZE ((sizeof(struct inotify_event)+FILENAME_MAX)*1024)
string get_event(int fd, string target)
{
ssize_t len;
char buff[BUFF_SIZE] = {0};
len = read (fd, buff, BUFF_SIZE);
此时主“for”循环停止工作并等待第一个目录中发生某些事情。我只想检查监视目录中是否有任何更改,而不是等待更改。
帮助:<