【发布时间】:2013-10-18 13:09:02
【问题描述】:
假设我有以下 Node 程序,一台机器会“Ping!”:
var machine = require('fs').createWriteStream('machine.log', {
flags : 'a',
encoding : 'utf8',
mode : 0644
});
setInterval(function () {
var message = 'Ping!';
console.log(message);
machine.write(message + '\n');
}, 1000);
每秒,它将向控制台打印一条消息,并将其附加到日志文件中(如果需要,它将在启动时创建)。这一切都很好。
但是现在,如果我在进程运行时删除machine.log 文件,它会继续愉快地嗡嗡作响,但写入将不再成功,因为文件已消失。但看起来写入会默默地失败,这意味着我需要明确检查这种情况。我搜索了Stream docs,但似乎找不到在发生此类事情时发出的明显事件。 write()的返回值也没有用。
如何检测我正在写入的文件何时被删除,以便我可以尝试重新打开或重新创建该文件?这是一个 CentOS 盒子,如果相关的话。
【问题讨论】:
标签: javascript node.js stream filesystems fs