在文件删除/修改期间解放

时间:2011-10-05 11:19:33

标签: c linux asynchronous file-descriptor libevent

是否可以使用libevent来监控文件删除/更新?

假设删除了/var/log/file.1,我想在我的程序中报告它。这可能吗?如果是,怎么样?

我的操作系统是Linux,我想创建一个在某些操作系统操作期间触发消息的恶​​魔。

我在哪里可以找到更多信息?

2 个答案:

答案 0 :(得分:1)

如果您的代码特别针对Linux,则可以使用inotify(7)工具。它有一个非常简单的编程接口,用于监视文件更改和删除,而libevent的目的略有不同:监视一组描述符,并在其中任何一个准备好读/写时得到通知

我不确定libevent是否包含inotify,因为所有其他操作系统libevent都不支持类似的设施。

答案 1 :(得分:0)

只是使用一些简单的逻辑,你可以检查这个文件是否被删除?

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

struct stat st = {0};

if (stat("/var/log/file.1", &st) == -1) {
    printf("file is deleted or not present");
}

您还可以通过检查struct stat

的另一个元素来检查文件的更多属性