如何在C语言中立即关闭一个程序?

问题描述 投票:0回答:1

我正在编写C代码,其中我正在分析一些数据。我已经将程序设置为只处理100个数据输入。当它有超过100个输入时,它给出了一个分段故障。我想创建一个方法,当输入的数量超过100时,用户将被警告,程序将终止。我知道如何从主函数中实现它,只需简单地 return 0然而,我离main还有多个函数调用,即使是一个 return 0 在这个函数中,会让它继续循环。

有没有什么方法可以立即终止整个程序而不在main中?

c
1个回答
39
投票

标准函数 exit 就是你要找的东西。

正常地终止进程,对终止的进程进行常规清理。

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

状态参数返回给宿主环境。

不过如果你能修正segfault错误会更好。


6
投票

你需要包含标准lib,然后你可以在任何地方调用exit。

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

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


2
投票

你也可以 fprintf(stderr, ....) 然后叫 abort()如果你想在以后调试你的错误,这可能会很有帮助。

但我认为你应该重新编码你的程序,使其大小只受可用资源的限制。更大 计算机(不管这意味着什么)可以处理超过100个输入。


2
投票

一个稍微好一点的做法可能是用信号处理程序来捕捉分段故障,并让信号处理程序发出一个SIGSTOP信号。

这样,你的程序就停止了,但却留在了内存中。然后,你可以用调试器连接到它,看到程序在SEGFAULT发生时被冻结在原地的光辉。

这对于发现长期运行的程序中的问题是很有用的,因为你没有在开发集成开发环境内运行。

© www.soinside.com 2019 - 2024. All rights reserved.