2
代碼:析構函數的NodeJS
function terminator(sig)
{
if (typeof sig === "string")
{
console.log('Received %s - terminating Node server ...', sig);
process.exit(1);
};
console.log('Node server stopped.');
};
process.on('exit', function() { terminator(); });
function terminatorSetup(element, index, array)
{
process.on(element, function() { terminator(element); });
};
['SIGHUP', 'SIGINT', 'SIGQUIT', 'SIGILL', 'SIGTRAP', 'SIGABRT', 'SIGBUS', 'SIGFPE', 'SIGUSR1', 'SIGSEGV', 'SIGUSR2', 'SIGPIPE', 'SIGTERM'].forEach(terminatorSetup);
不知怎的,這並不工作在Windows上,使用Ctrl + C退出控制檯上不顯示任何信息,但是當我process.on(element, ...);
前插入console.log(element);
它工作得很好。我錯過了什麼?沒有什麼我在那裏應該是異步afaik。
不應該打印'節點服務器已停止.' nontheless?另外,當我進入控制檯行時,它確實打印出SIGINT被觸發。 – sollniss 2015-02-08 22:50:11
嗯,你是對的,我錯過了那條線。儘管如此,信號真的不能在Windows上使用 - 您是使用Cygwin還是一些這樣的posix環境仿真...? – 2015-02-08 22:57:59
哦,是的。我做 ... – sollniss 2015-02-09 00:13:10