Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从节点进程本身重新启动节点进程_Javascript_Node.js_Process_Fork - Fatal编程技术网

Javascript 从节点进程本身重新启动节点进程

Javascript 从节点进程本身重新启动节点进程,javascript,node.js,process,fork,Javascript,Node.js,Process,Fork,是否可以完全从其内部重新启动正在运行的单线程节点进程 我认为服务器应该采取如下步骤: 关闭监听插座 通过child\u process.Fork或child\u process.spawn,将process.argv移交给子进程,派生出子进程 父进程上的process.exit()(不应终止子进程) 孩子再次绑定监听套接字 这是可行的还是我完全错了?这是可能的,但通常人们只使用启动单个主进程和N个服务器进程的现有解决方案。然后,当服务器进程死亡或停止时,它只会启动一个新进程。一个例子是 也就

是否可以完全从其内部重新启动正在运行的单线程节点进程

我认为服务器应该采取如下步骤:

  • 关闭监听插座
  • 通过
    child\u process.Fork
    child\u process.spawn
    ,将process.argv移交给子进程,派生出子进程
  • 父进程上的process.exit()(不应终止子进程)
  • 孩子再次绑定监听套接字

这是可行的还是我完全错了?

这是可能的,但通常人们只使用启动单个主进程和N个服务器进程的现有解决方案。然后,当服务器进程死亡或停止时,它只会启动一个新进程。一个例子是


也就是说,只要使用
分离:true
参数
.spawn

,您的示例对我来说是正确的!有一个小问题是被抛回终端思想。我想知道是否有可能避免这种与终端思想的分离。我在上面的要点中继承了stdin、stdout和stderr,但是子进程的某些方面使它失去了进程的forground属性。@silverwind我认为这不起作用,因为当父进程死亡时,stdio流将断开连接。使用父进程,不断重生的子进程应该可以工作,因为父进程永远不会关闭。是的,我想我会使用主进程来产生子进程。显然,从C到后台进程有很多重新连接的方法,但这些东西肯定不会暴露给节点。