一个小疑问 我有一个应用程序(exe)在无限循环中运行,执行多长时间。我的意思是如果我的系统打开它会执行多年。或者是否有运行申请的时间限制。
(如果这个问题不正确,请指出正确的参考资料)
答案 0 :(得分:4)
如果应用程序在无限循环中运行,即
while(1)
{
//...
}
如果遇到错误且代码未正确处理,它将停止,否则它将无限期运行。
如果存在与操作系统相关的信号以终止进程,它将终止。这可能来自用户手动尝试终止进程,或者可能由于系统上的一般内存不足而发生。这些类型的操作系统信号通常是您无法控制的。但是,您可以实现一种方法来检测您的进程是否已被终止(可能通过使用子进程),如果意外终止该进程将重新启动/恢复进程。
如果您将进程添加到操作系统的启动脚本中,即使出现电源故障或可能导致重新启动的其他类型的事件,您也会受到保护。
答案 1 :(得分:4)
如果我的系统处于开启状态,它会执行多年
这取决于操作系统。可以配置Unix系统(使用ulimit -t
),这样一旦消耗了一定的CPU时间,进程就会被自动终止。
答案 2 :(得分:2)
只要计算机能够运行,程序就会一直运行。
但是,如果您的程序可能导致堆栈溢出或其他崩溃
例如(将永远运行的程序)
int main(){
while(true){
int i = 0;
}
}
例如(崩溃程序,相当确定这实际上会崩溃)
int main(){
while(true){
int *i = new int;
}
}
答案 3 :(得分:2)
理论上它可以永远执行。但大多数程序复杂并不完全是内存效率。它可能会及时消耗越来越多的内存,并可能达到进程内存限制。
在x86 Windows系统上,process limit通常为2GB
答案 4 :(得分:1)
它将一直执行,直到您重新启动或以其他方式终止进程。
如果它真的是一个无限循环你会很烦恼,但很快就会杀死它,因为其他应用程序将遭受盒子上的CPU饥饿。如果你是多核的话,这不是一个交易破坏者,但是看到其他所有人都放慢脚步仍然是一种刺激。
答案 5 :(得分:1)
这将是永恒的计划。重启或系统挂起都会终止进程
答案 6 :(得分:1)
只要给出所有必需的资源,就会运行无限循环。
答案 7 :(得分:1)
简单的答案是,它可能不会像你期望的那样永远运行。
您的操作系统(尤其是旧版本的Windows)可能需要重新启动 - 示例:Windows 95和Windows 98(现已打补丁)中存在一个着名的错误,导致这些系统在49.7天的正常运行时间后停止运行({{3} })。 我希望最新版本的Windows不会出现这种问题。
它还取决于您的操作系统的调度程序。大多数时候可以运行高优先级任务。我听说过一些较旧的Unix系统,其中低优先级的任务多年来一直没有机会运行! 。无论如何,我们不会在桌面操作系统中遇到这种极端情况。
答案 8 :(得分:1)
维基百科的一个例子:
2005年,Novell报告了一台具有6年正常运行时间的服务器。[2] [3]。 虽然这可能听起来很不寻常,但这实际上很常见 服务器在工业环境下维护,主机关键 申请,考虑银行系统。
总是至少有一个过程会一直运行。
答案 9 :(得分:1)
我只想指向Wikipedia:
2005年,Novell报告了一台具有6年正常运行时间的服务器。
从事为服务器编写软件的业务,这些流程仅在维护操作中停止。它们预期永远运行。然而,在实践中,我们分配我们的负载,使维护发生的频率远高于每6年一次,但几个月并不罕见。