我正在编写C代码,其中我正在分析一些数据。我已经将程序设置为只处理100个数据输入。当它有超过100个输入时,它给出了一个分段故障。我想创建一个方法,当输入的数量超过100时,用户将被警告,程序将终止。我知道如何从主函数中实现它,只需简单地 return 0
然而,我离main还有多个函数调用,即使是一个 return 0
在这个函数中,会让它继续循环。
有没有什么方法可以立即终止整个程序而不在main中?
标准函数 exit
就是你要找的东西。
正常地终止进程,对终止的进程进行常规清理。
首先,所有通过调用atexit注册的函数都会按照其注册的相反顺序执行。然后,关闭所有的流并删除临时文件,最后将控制权返回给主机环境。
状态参数返回给宿主环境。
不过如果你能修正segfault错误会更好。
你需要包含标准lib,然后你可以在任何地方调用exit。
#include <stdlib.h>
...
exit(status);
其中status是一个整数,代表退出代码.对于关注的status:对于约定0是成功,其他值表示错误状态.
你也可以 fprintf(stderr, ....)
然后叫 abort()
如果你想在以后调试你的错误,这可能会很有帮助。
但我认为你应该重新编码你的程序,使其大小只受可用资源的限制。更大 计算机(不管这意味着什么)可以处理超过100个输入。
一个稍微好一点的做法可能是用信号处理程序来捕捉分段故障,并让信号处理程序发出一个SIGSTOP信号。
这样,你的程序就停止了,但却留在了内存中。然后,你可以用调试器连接到它,看到程序在SEGFAULT发生时被冻结在原地的光辉。
这对于发现长期运行的程序中的问题是很有用的,因为你没有在开发集成开发环境内运行。