2016-11-23 31 views
-1

我最近在mono开发c#中做了一个Tcp服务器。(Linux Mint) - 如何在崩溃时重新启动mono.exe

我的电脑运行的是Linux薄荷17

我运行使用sudo mono Desktop/server.exe 但是它崩溃飘飞这台服务器,我想使它重新启动时崩溃,因为我否则要回家给我的电脑在崩溃时重新启动它。

我意识到这不是一个稳定的解决方案,但它现在会做。

我听说过UpStart,但无法真正理解文档。 当我通过终端启动我的程序时,我看不到任何在系统监视器中弹出的新进程,所以我也不知道程序进程的名称。

(我一直在寻找了一阵儿,并试图新贵一堆,但我已经与我的任何的尝试没有成功甚至没有找到服务器进程的名称。)

问题: 有没有一种简单的方法来检测我的程序是否正在运行,如果没有自动重启它?

+0

使用一些监控/监控器,例如supervisord。 – Evk

回答

0

我最近在单声道开发c#中做了一个Tcp服务器。

如果您拥有代码,最好的办法是修复代码,使其不会崩溃。只有在您没有代码或人力来解决您所使用的软件中的问题时,才想要重新启动某些内容。

+0

这是我自己的代码,但程序非常简单,我只能自己使用它。只要重新启动它对我来说肯定是一个很好的解决方案。我必须解决的问题是为我提高(我在搜索后学到了)。但是,如果它是微不足道的回答 –

+0

,它应该很容易修复;只需在您的Main方法中尝试一次,然后再次调用您的初始化逻辑即可 – knocte

0

我已经解决了我的问题,但我不知道我会用一个统一的答案贡献:

我以前的代码涉及的区块:

while (data != null) { 
     sw.WriteLine (data); 
     sw.Flush(); 
     data = file.ReadLine(); 
     } 
sw.Close(); 
file.Close(); 

其中SW是一个StreamWriter。 它崩溃的原因是sw.Flush失败,我不明白。我有尝试捕捉解决它的建议通过knocte:

try{ 
    while (data != null) { 
     sw.WriteLine (data); 
     sw.Flush(); 
     data = file.ReadLine(); 
     } 
    sw.Close(); 
    file.Close(); 
    }catch{ 
     sw.Close(); 
     file.Close(); 
     continue; 
    } 

这是不是一个很好的解决方案,但显然更好,然后重新启动应用程序。现在一切似乎都运转良好。由于

编辑:显然knocte建议我把一个尝试捕捉了我的整个主(),但是这仍然有效