如何在cpp中“忽略”段错误?

时间:2018-05-28 17:18:02

标签: c++ segmentation-fault arguments parameter-passing

所以,这个问题可能听起来很奇怪,但让我解释一下: 我用C ++编写了一个代码来分析一些数据,这些数据在文件中分开。我传递这些文件的名称(有很多)作为程序的参数。 也许我在我的代码中犯了一些错误,或者某些文件中的数据可能并不“好”,而且现在无关紧要。但对于某些文件,程序会停止并返回一条段错误消息。 有一种方法可以将segfault跳转到参数列表中的下一个文件,只使用C ++?

也许我可以使用一些shell脚本为每个文件运行它,然后,如果我得到一个段错误,它将继续逐个运行。但这不是我现在想要的,如果我不能解决这个问题,我会尝试这种方式。

提前谢谢你们。

1 个答案:

答案 0 :(得分:2)

可以实际上为SIGSEGV安装一个信号处理程序(在大多数Unix操作系统上),当程序遇到段错误时会调用它,如果你希望你< em>可以以任何合适的方式处理(包括忽略它)。这样做是非常深奥的(java这样做,但这是我见过的唯一半理智用法),并且很少做正确的事情,并且在这样的处理程序中正确处理错误是困难,因为你可以确定 导致错误以及你返回后程序的状态是什么来自信号处理程序。

所以,当你可以&#34;处理&#34; SIGSEGV我建议您改为查看清理输入数据的其他方法,以便您首先避免使用段错误。