为什么需要使用inotify_add_watch()两次调用read()

时间:2018-08-17 20:45:34

标签: linux inotify

修改后,我正在尝试使用inotify_add-watch()获取文件的通知 (inotify_add_watch(fd,filename.c_str(),IN_MODIFY);) 在linux文件系统(Linux内核4.9.0)上。

但是在收到通知后,read()应该调用两次,直到我收到关于文件/ etc / temp下一次修改的通知。有人可以澄清为什么我需要两次调用read()吗?谢谢。

{
  "name": "devconnector",
  "version": "1.0.0",
  "description": "Social network for developers",
  "main": "server.js",
  "scripts": {
      "client-install": "npm install --prefix client",
      "start": "node server.js",
      "server": "nodemon server.js",
      "client": "npm start --prefix client",
      "dev": "concurrently \"npm run server\" \"npm run client\"",
      "heroku-postbuild": "NPM_CONFIG_PRODUCTION=false npm install -- 
       prefix client && npm run build --prefix client"
  },
      "author": "Brad Traversy",
      "license": "MIT",
      "dependencies": {
           "bcryptjs": "^2.4.3",
           "body-parser": "^1.18.2",
           "concurrently": "^3.5.1",
           "express": "^4.16.3",
           "gravatar": "^1.6.0",
           "jsonwebtoken": "^8.2.0",
           "mongoose": "^5.0.12",
           "netlify-cli": "^1.2.3",
           "passport": "^0.4.0",
           "passport-jwt": "^4.0.0",
           "validator": "^9.4.1"
      },
      "devDependencies": {
           "nodemon": "^1.17.3"
      }
 }

}

1 个答案:

答案 0 :(得分:1)

您必须先消耗所有待处理的事件,然后它才能再次开始阻止。

例如如果执行echo foo > /etc/test,您可能会遇到两个事件:一个事件被截断,另一个事件被写入。

如果您不同时使用两者,则下一个将立即返回。