如何立即关闭C中的程序?

时间:2011-11-01 22:13:52

标签: c exit

我正在编写C代码,我正在分析一些数据。我已将程序设置为仅处理100个数据输入。当它有超过100个输入时,它会产生分段错误。我想创建一种方法,以便当输入数量超过100时,将警告用户并终止程序。我知道如何通过简单的return 0从main函数中完成它,但是我是远离main的多个函数调用而且很难做到这一点,即使这个函数中的return 0也会使它循环。< / p>

有没有立即终止整个程序的方法而不是主要的?

4 个答案:

答案 0 :(得分:36)

您正在寻找标准函数exit

  

正常终止进程,执行常规清理以终止进程。

     

首先,通过调用atexit注册的所有函数都按照注册的相反顺序执行。然后,关闭所有流并删除临时文件,最后将控件返回到主机环境。

     

status参数返回给主机环境。

如果您修复了段错误,那会更好。

答案 1 :(得分:5)

您需要包含标准库,然后您可以在任何地方调用exit:

#include <stdlib.h>
...
exit(status);

其中status是表示退出代码的整数。 对于关注状态:对于约定0是成功,其他值表示错误状态。

答案 2 :(得分:2)

您也可以fprintf(stderr, ....)然后致电abort();如果您想稍后调试您的错误,这可能会有所帮助。

但是我相信你应该重新编写你的程序,以便只能通过可用的资源给出大小限制:所以如果你在一台更大的计算机上运行你的程序(无论这意味着什么)它可以处理超过100输入。

答案 3 :(得分:1)

稍微好一点的做法可能是使用信号处理程序捕获分段错误,并让信号处理程序引发SIGSTOP信号。

这样你的程序会停止,但会留在内存中。然后,您可以使用调试器附加到该程序,并在SEGFAULT发生的位置查看程序的所有荣耀。

这对于在开发IDE中运行的长时间运行的程序中查找问题非常有用。