fs.watchFile
花粉が舞っている。部屋の中でおとなしくしているのが正解。だからディスプレイの前に鎮座。
Air.new().delete(花粉)
ファイル更新の検知
node-dev がどうやってファイルの更新を検知しているか、が気になったのでソースを見てみた。ちなみに、node-dev の大まかな動きは、コマンドを子プロセスで実行し、ファイルの更新を検知したら子プロセス再起動させる、という感じだった。
で、どのような方法で検知していたかというと、File System モジュールの watchFile() を使用してファイルの更新を検知していた。
watchFile
試してみる。
var fs = require('fs'); var file = process.argv[2]; fs.watchFile(file, function (curr, prev) { console.log('size:' + curr.size + ', mtime:' + curr.mtime); }); var fd = fs.openSync(file, 'w'); setTimeout(function() { fs.writeSync(fd, 'foo are you?\n', 0); fs.close(fd, function(err) { fs.unwatchFile(file); }); }, 1000 );
実行
% node watch.js output.txt size:0, mtime:Sun Feb 27 2011 17:17:12 GMT+0900 (JST) size:13, mtime:Sun Feb 27 2011 17:17:13 GMT+0900 (JST)
output.txt がない状態で実行すると何も表示されない。当然か、見張るファイルがないんだし。