Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何监视目录中的文件更改_C_Linux_Inotify - Fatal编程技术网

C 如何监视目录中的文件更改

C 如何监视目录中的文件更改,c,linux,inotify,C,Linux,Inotify,我正在使用C,但我也可以使用任何Linux shell命令 我需要的是: 将手表添加到目录。一旦目录中的一个文件被修改(写入),我将收到该事件的通知,我需要知道哪个进程进行了此更改 我尝试使用的内容: inotifywait+lsof,但它对我不起作用,因为在进程打开文件时需要调用lsof,我想在进程完成修改文件后调用它(inotifywait告诉我x.txt已被修改;我通过此文件调用lsof,但它不起作用) auditctl,但我无法准确设置日志何时与修改事件相关 当我单击“编辑”时在这个问

我正在使用C,但我也可以使用任何Linux shell命令

我需要的是:

将手表添加到目录。一旦目录中的一个文件被修改(写入),我将收到该事件的通知,我需要知道哪个进程进行了此更改

我尝试使用的内容:

  • inotifywait
    +
    lsof
    ,但它对我不起作用,因为在进程打开文件时需要调用
    lsof
    ,我想在进程完成修改文件后调用它(
    inotifywait
    告诉我
    x.txt
    已被修改;我通过此文件调用
    lsof
    ,但它不起作用)

  • auditctl
    ,但我无法准确设置日志何时与修改事件相关


当我单击“编辑”时在这个问题下,我马上得到了一堆拼写检查错误。你也有吗?你有没有看过文件更改的完整inotify消息包含哪些内容。如果这些消息不包含有关更改文件的过程的信息,你可能不会成功。如果有,你就完蛋了rom激发inotifywait程序为您提供所需信息,或编写一个提供所需信息的程序。@JonathanLeffler不,inotifywait不提供任何与程序标识相关的信息。我认为您运气不好,或者至少您有自己的工作要做。然而,我不是Linux monitor方面的专家ing,所以其他人可能会给你更好的消息。所以,你当然可以等待,但我不确定你会得到好消息,但我可以为你希望。你是否查看了底层的iNotify库调用以了解它们提供了什么信息?查看它会显示:限制和警告:iNotify API没有提供有关美国的信息er或触发inotify事件的进程。特别是,对于通过inotify监视事件的进程来说,没有简单的方法来区分它自己触发的事件与其他进程触发的事件。祝您玩得开心。