2017-12-27 689 views
2

我写了一个简单的函数,重新启动/关闭应用程序。重新启动不起作用,我不知道为什么。子进程启动,然后立即关闭。我试图从孩子那里抓到错误,但没有错误。不能产生子进程

async function Shutdown(message,restart){ 
    if(message) console.log(message) 

    await Logout() 

    if(restart){ 
     let proc = childprocess.spawn(process.argv[0],process.argv.splice(1),{ 
      "detached": true, 
     }) 
    } 
    process.exit(0) 
} 
+0

我相信'process.exit(0)'使其关机没有错误,产生与'console.log'更多的输出,也看看像https://github.com/Unitech/pm2这样的东西来管理你的流程。 – Gntem

+0

我试图检查孩子的退出代码,但它退出0 proc.on('exit',function(code){console.log(code)}) – EntityinArray

回答

2

documentation

当使用分离选项来启动一个长期运行的进程,除非它具备 过程不会留在父后在后台运行退出 未连接 到父级的stdio配置。

所以加stdio: 'ignore'或其他方法,使儿童的过程中保持活着

let proc = childprocess.spawn(process.argv[0],process.argv.splice(1),{ 
      detached: true, 
      stdio: 'ignore' 
    }) 
    proc.unref(); 
+0

我试过了,子进程仍然立即关闭。 – EntityinArray