我有一个应用程序(不是我编写的应用程序,但只有一个),无论出于何种原因,它会在一定时间后崩溃。无论如何,我可以检测到,那个exe崩溃并重新启动它?我搜索了高低,我发现的只是一个“无响应”代码来检测它,它根本不起作用。有任何想法吗?我知道我没有任何关于我尝试过的例子,但说实话我只发现了一件事而且失败了,所以我没有想法。谢谢!
答案 0 :(得分:5)
我有个你的想法。它没有检测到错误,但在关闭时重启你的exe。 (要关闭你的exe,关闭之前的脚本窗口)
创建.bat文件
@echo off
:run
/path/to/your/exefile.exe
goto run
修改强>
有关信息:应用程序崩溃与#34;无响应"状态。这种状态意味着您的程序被锁定在循环中,例如在长程序等中... ...崩溃,意味着该进程被杀死。对我来说至少:))
我为这个特定情况制作了这个脚本。
@echo off
:run
REM kill your exe if not responding
taskkill /f /im "notepad++.exe" /fi "STATUS eq NOT RESPONDING" >nul
tasklist /nh /fi "imagename eq notepad++.exe" /fi "status eq running" | find /i "notepad++.exe" >nul && (
echo Notepad is running
REM program running nothing to do
) || (
echo Notepad was not found ! Restarting notepad...
REM start for launch .exe without waiting
start "C:\Program Files (x86)\Notepad++" notepad++.exe
)
REM Wait 1 second
timeout /t 01>nul
goto run
为了测试这个,我启动了我的scrpit。记事本已启动。我要求记事本找到"某事"在文件过滤器C:\
中*.*
。
在任务管理器中,我点击"任务结束"在"应用"标签。 Windows弹出窗口显示"程序未响应"和"现在结束"选项。
并且立即(取决于此行timeout /t 01>nul
),脚本重新启动记事本!
答案 1 :(得分:0)
首先,找出为什么你的应用程序崩溃是不明智的?而不是阻止崩溃?试着看看崩溃的原因是什么。
但是,如果您只想检测并停止崩溃,可能需要查看以下解决方案:
Best way to detect an application crash and restart it
How do I detect an application crash
阅读这些内容可能会很好,我找到的最佳解决方案是:
如何创建一个包装器应用程序,作为一个孩子启动故障应用程序并等待它?如果子项的退出代码指示错误,则重新启动它,否则退出。 (答案取自Vinko Vrsalovic)