我正在编写一个对学生程序进行评分的程序,我相信您可以想象,它们有时会出现分段错误。我遇到的问题是,当学生编程分段错误时,没有迹象表明发生了什么。
proc = subprocess.Popen(student_command,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
self.stdout, self.stderr = proc.communicate()
self.returncode = proc.returncode
我从 中提取stderr
、stdout
和返回码subprocess
,但如果程序分段错误,stderr
则为空,stdout
为空,返回码为 -11。现在我可以查找 -11 退出代码并假设如果这是返回代码,则存在分段错误,但也没有什么可以阻止学生的代码将 -11 作为返回代码仅仅因为学生感觉想要返回-11。
您如何判断子进程分段是否出错,而不是仅仅感觉返回 -11?我真的不太关心 stderr 和 stdout 中的内容,为此我看到了很多帖子,包括这个处理获取输出的帖子,但我不太关心输出,虽然从标准错误中获取“分段错误”字符串会很好,但我真正需要的是一种明确告诉子进程发生了什么的方法。