Я пишу программу, которая оценивает студенческие программы, и, как я уверен, вы можете себе представить, они иногда имеют недостатки сегментации. Проблема, с которой я сталкиваюсь, заключается в том, что когда ошибка сегментации студенческих программ отсутствует, нет никаких указаний на то, что произошло.
proc = subprocess.Popen(student_command,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
self.stdout, self.stderr = proc.communicate()
self.returncode = proc.returncode
Я беру stderr, stdout и код возврата из подпроцесса, но если ошибка сегментации программы, stderr пуст, stdout пуст, а код возврата - -11. Теперь я мог бы найти код выхода -11 и предположить, что если это код возврата, произошла ошибка сегментации, но также нет ничего, что помешало бы коду-ученику иметь код -11 в качестве кода возврата только потому, что ученику хотелось вернуться -11.
Как вы узнаете, что сегментирование сегментации подпроцесса, а не просто ощущение возврата -11? Мне все равно, что в stderr и stdout, и с этой целью видел несколько сообщений, включая this, которые касаются сбора результатов, но мне все равно, о выходе, хотя было бы неплохо получить строку "Сегментационная ошибка" из stderr, но мне действительно нужен способ окончательно рассказать, что произошло с подпроцессом.