【发布时间】:2018-11-07 07:42:13
【问题描述】:
所以,这个问题可能听起来很奇怪,但让我解释一下: 我用 C++ 编写了一个代码来分析一些数据,这些数据在文件中分开。我将这些文件的名称(其中有很多)作为参数传递给程序。 也许我在代码中犯了一些错误,或者其中一些文件中的数据不是“好”的,现在这并不重要。但是对于某些文件,程序会停止并返回一个段错误消息。 有一种方法可以仅使用 C++ 将段错误跳转到参数列表中的下一个文件?
也许我可以使用一些 shell 脚本为每个文件运行它,然后,如果我遇到段错误,它会继续一个一个地运行。但这不是我现在想要的,如果我不能解决这个问题,我会尝试这种方式。
提前谢谢你们。
【问题讨论】:
-
问题是段错误(或其原因)可能会使您的程序、运行时支持库或两者都处于不一致状态。如果您继续,忽略段错误,您将无法信任任何后续结果。
-
要么编辑您的程序以修复段错误,要么使用 shell 脚本调用具有不同参数的命令。
-
操作系统?这真的不能以独立于操作系统的方式完成。但是你开始一个单独的过程的想法是最干净的解决方案。它为操作系统提供了一种封装和隔离故障的方法。是否通过 shell、CreateProcess() 或 fork() 启动其他进程取决于您的具体情况。
-
也许我的代码有错误 -- 注意失败可能源于你认为没问题的代码,分段错误只是一个症状以前的错误代码。那么如果你的程序有这样的段错误,那么它的可靠性如何呢?隔离坏文件或坏数据,重现段错误(这应该是第一件事),并修复错误。至于启动新流程——如果发现您每天或每周发生数百次分段故障怎么办?在某些时候,启动新流程的临时工作可能不可行。
标签: c++ segmentation-fault arguments parameter-passing