Explorons le principe de mise en œuvre du module fs watch dans node,
const fs = require('fs');
var fileName = 'a.txt';
fs.watch(fileName, (function () {
var count = 0;
return function () {
count++;
console.log("文件" + fileName + " 内容刚刚改变。。第" + count + "次");
};
})());
console.log("watching file...");
Comment fs implémente-t-il les notifications d'événements en réponse aux modifications de fichiers ? Si c'est en surveillant les changements de taille des fichiers, ou autre chose ?
Voici quelques éléments visibles à travers le code source du nœud :
const FSEvent = process.binding('fs_event_wrap').FSEvent;
function FSWatcher() {
EventEmitter.call(this);
var self = this;
this._handle = new FSEvent();
this._handle.owner = this;
this._handle.onchange = function(status, eventType, filename) {
if (status < 0) {
self._handle.close();
const error = !filename ?
errnoException(status, 'Error watching file for changes:') :
errnoException(status,
`Error watching file ${filename} for changes:`);
error.filename = filename;
self.emit('error', error);
} else {
self.emit('change', eventType, filename);
}
};
}
Le fs_event_wrap.cc qui suit est essentiellement en langage étranger.
Le volume de données que j'ai monté dans Docker ne peut pas détecter les notifications d'événements
Jetez un œil à ceci https://github.com/nodejs/nod...
Allez, mon garçon, répondons-y, je ne sais pas si tu m'as marché dessus, y a-t-il un trou dans ta tête ?