node.js - Laissez-moi vous expliquer le principe d'implémentation du module FS Watch dans Node
ringa_lee
ringa_lee 2017-05-27 17:44:10
0
2
1189

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

ringa_lee
ringa_lee

ringa_lee

répondre à tous(2)
Ty80

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 ?

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!