繁体   English   中英

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

[英]How can I immediately close a program in C?

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

有没有什么直接的方法可以在不进入主程序的情况下终止整个程序?

标准函数exit是您要查找的内容:

正常终止进程,为终止进程执行定期清理。

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

status 参数返回到主机环境。

不过如果你修复了段错误会更好。

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

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

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

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

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

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

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

但是我相信您应该重新编码您的程序,以便大小限制仅由可用资源给出:因此,如果您在更大的计算机上运行您的程序(无论这意味着什么),它可以处理超过 100 个输入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM