node.js - 來(lái)幫我捋一下node中fs模塊watch實(shí)現(xiàn)原理
問(wèn)題描述
來(lái)探索一下node中fs模塊watch實(shí)現(xiàn)原理,
const fs = require(’fs’);var fileName = ’a.txt’;fs.watch(fileName, (function () { var count = 0; return function () {count++;console.log('文件' + fileName + ' 內(nèi)容剛剛改變。。第' + count + '次'); };})());console.log('watching file...');
fs如何實(shí)現(xiàn)針對(duì)文件變化做出響應(yīng)的事件通知的呢?如果說(shuō)是通過(guò)監(jiān)聽(tīng)文件大小變化,或者其他?
下面是通過(guò)node源碼看到的一些東西:
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); } };}
后面的fs_event_wrap.cc 基本都是外星語(yǔ)言了。
下面我再docker當(dāng)中掛載的數(shù)據(jù)卷監(jiān)聽(tīng)不到事件通知
問(wèn)題解答
回答1:看一下這個(gè)吧 https://github.com/nodejs/nod...
回答2:快來(lái)了Boy解答一下啊,不知道踩我的,腦殼有坑?
相關(guān)文章:
1. 在mac下出現(xiàn)了兩個(gè)docker環(huán)境2. html - sumlime text3代碼自動(dòng)補(bǔ)全功能問(wèn)題!3. web - css3 @keyframes用一次后面的任何樣式就解析不了了.4. javascript - 有一個(gè)異步獲取數(shù)據(jù)的函數(shù)A,其他依賴這個(gè)A得到的數(shù)據(jù)的函數(shù)是否都必須是異步的?5. css3 - 給body設(shè)置了translate3d,動(dòng)畫的同時(shí)導(dǎo)致內(nèi)部的fixed元素失效?6. node.js - win7 grunt不是內(nèi)部或外部命令。7. 想練支付寶對(duì)接和微信支付對(duì)接開(kāi)發(fā)(Java),好像個(gè)人不可以,怎么弄個(gè)企業(yè)的呢?8. node.js - 用node做微信開(kāi)發(fā)后臺(tái),獲取access_token報(bào)錯(cuò)9. css3 - 求css頁(yè)面解決方案10. javascript - 大神們,求救啊,搞百度編輯器,弄了三天了,問(wèn)題,如下
