Articles of 退出

当Node.js进程可以直接退出()而不触发其他信号事件(uncaughtException,SIGINT,SIGTERM …)

我使用REDIS数据存储来处理应用程序。 为了保持数据的完整性,我想在stream程closures时清理商店。 我创build了一个函数处理程序,并绑定它(用process.on())来发信号事件:uncaughtException,SIGINT,SIGTERM,SIGQUIT,它工作正常(CTRL + C,进程查杀,exception,…)。 但是我已经读过,在某些情况下,过程可以直接退出而不触发其他信号事件。 在这种情况下,问题在于process.on('exit')处理程序只能处理同步任务。 我做了不同的testing,试图以不同的方式杀死这个过程。 而且(除了在Windows上使用SIGTERM),我无法确定process.on('exit')是否直接触发而没有SIGINT,SIGTERM或其他事件触发的情况。 所以我的问题是(在Linux系统上),在什么情况下进程可以直接退出而不会触发这个事件: http : //nodejs.org/api/all.html#all_signal_events ?

Node.js拦截process.exit

所以我想在我的node.js程序的末尾运行一个shell命令,然后在退出之前等待输出/打印它。 我尝试了process.on('exit',function(){})并在那里运行了子exec执行命令,但是在callback之前退出了程序。 所以,而是我使用process.exit封闭,但我得到了一些奇怪的结果。 代码的基础是: process.exit = (function(old_exit){ return function(code){ var exec = require('child_process').exec; var child; child = exec("my shell command", function (error, stdout, stderr) { if (error !== null) { console.log('exec error: ' + error); } console.log(stdout); //I first had this as the concluding line: old_exit.apply(process,arguments); //and I also tried old_exit.apply(process,[]); //and even (which I […]

如何停止执行一个node.js脚本?

说我有这个脚本: var thisIsTrue = false; exports.test = function(request,response){ if(thisIsTrue){ response.send('All is good!'); }else{ response.send('ERROR! ERROR!'); // Stop script execution here. } console.log('I do not want this to happen if there is an error.'); } 正如你所看到的,如果出现错误,我想停止脚本执行任何下游函数。 我设法通过增加return;来实现这一点return; 在发送错误响应之后: var thisIsTrue = false; exports.test = function(request,response){ if(thisIsTrue){ response.send('All is good!'); }else{ response.send('ERROR! ERROR!'); return; } console.log('I do […]

正常closures一个节点.JS HTTP服务器

这是我正在工作的一个简单的networking服务器 var server = require("http").createServer(function(req,resp) { resp.writeHead(200,{"Content-Type":"text/plain"}) resp.write("hi") resp.end() server.close() }) server.listen(80, 'localhost') // The shortest webserver you ever did see! Thanks to Node.JS 🙂 除了保持活力以外,它们都很棒。 当第一个请求进来时, server.close被调用。 但是这个过程并没有结束。 实际上,TCP连接仍然是打开的,这就允许另一个请求通过,这是我想要避免的。 我如何closures现有的保持连接?