Node.js: Detectando um arquivo, aberto com fs.createWriteStream (), sendo excluído
Digamos que eu tenha o seguinte programa do Node, uma máquina que faz "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);
A cada segundo, ele imprime uma mensagem no console e também o anexa a um arquivo de log (que será criado na inicialização, se necessário). Tudo funciona muito bem.
Mas agora, se eu excluir omachine.log
Enquanto o processo estiver em execução, ele continuará a cantarolar alegremente, mas as gravações não serão mais bem sucedidas porque o arquivo desapareceu. Mas parece que as gravações falham silenciosamente, o que significa que eu precisaria verificar explicitamente essa condição. Eu procurei noTransmitir documentos mas não consigo encontrar um evento óbvio que é emitido quando esse tipo de coisa ocorre. O valor de retorno dewrite()
também não é útil.
Como posso detectar quando um arquivo que estou escrevendo é excluído, para que eu possa tentar reabrir ou recriar o arquivo? Esta é uma caixa do CentOS, se for relevante.