所有
我有一台运行Win8.1的Windows无头机器(没有连接显示器),它运行一个24x7全天候重启的.NET应用程序。该应用程序运行node.js进程,该进程存在导致节点突然退出的问题。
当我尝试解决节点问题(这不是本文的主题)时,我向应用程序添加了一些代码,以便在中止时重新启动节点。应该非常简单,并且当PC重新启动但节点最终中止时节点进程启动,在控制台连接到计算机之前,通过插入监视器或通过远程控制台,不会引发进程“已退出”事件像VNC那样重启代码运行。如果连接了控制台,它将始终重新启动。
如何让流程开始减少依赖于连接控制台?我尝试了一些流程选项,但它没有什么区别。
处理开始代码(vb.net)
Private Function LoadNodePlugins() As Boolean
NodeProc.StartInfo.FileName = "node.exe"
NodeProc.StartInfo.Arguments = "plugmgr.js"
NodeProc.StartInfo.WorkingDirectory = "..\..\..\..\pluginMgr\pluginMgr"
NodeProc.EnableRaisingEvents = True
NodeProc.Start()
Return True
End Function
处理退出事件处理程序
Private Sub NodeProcess_HasExited(ByVal sender As Object, ByVal e As System.EventArgs) Handles NodeProc.Exited
If NodeProc.ExitCode > 0 Then ' Don't capture normal termination
WriteConsole(True, "WARNING: Node process has aborted (error code " + NodeProc.ExitCode.ToString() + "). Restarting")
System.Threading.Thread.Sleep(5000)
LoadNodePlugins()
End If
End Sub