为什么node server.listen不返回shell

时间:2015-05-09 13:05:47

标签: node.js process server

节点文件可以描述从服务器到简单的脚本,甚至是只能打印到控制台的东西:

deepcopy()

//logger.js console.log('Hello World'); // in the terminal > node logger.js Hello World > 包(和其他人)如何不向用户提供命令提示符;他们如何让这个过程保持活力?

http

3 个答案:

答案 0 :(得分:6)

如果有正在侦听的套接字,节点将不会退出。这就是TL; DR答案。 (关于事件队列的其他答案是正确的,因为这可能是程序无法退出的原因,但这不是server.listen()发生的事情。)

在幕后,http.createServer()(最终)调用server.listen()调用server.listen()将阻止进程退出,因为server.listen()创建了一个套接字。注意from the docs for socket.ref()

  

对于unref,在先前未刷新的套接字上调用ref将不会让程序退出,如果它是唯一的套接字(默认行为)。如果套接字是refd再次调用ref将无效。

socket.unref()

  

如果这是事件系统中唯一的活动套接字,则在套接字上调用unref将允许程序退出。如果套接字已经unfd,则再次调用unref将无效。

如果你想从那里进入下一级别,我相信你需要深入研究Node.js / io.js中的C或C ++。

答案 1 :(得分:4)

节点将在事件队列中没有事件时退出,并且在您的情况下不存在任何后台任务(可以将事件添加到事件队列),它是后者。

答案 2 :(得分:0)

@ user2786771实际上就是这样。

更详细的说明可以在this article

中找到